Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192

Открыть новую тему     Написать ответ в эту тему

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые и смежные темы: по CMD и в Программах | по PowerShell | В помощь системному администратору | Прикладное программирование

PowerShell
Версии | Ассоциация и подпись сценариев
Сценарий для ассоциации файлов PowerShell и запуска неподписанных скриптов.
 
Прочее
Расширение возможностей
Функции
Write-Color
Output-DebugString
Провайдеры
Готовые скрипты
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?
Книги в PDF
Cheat Sheets
 

Cmd
Для перекодирования кириллицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
 
Готовые решения и частые вопросы
 
Описания работы команд и символов участниками темы:
setlocal enabledelayedexpansion и переменные окружения
символы & и && в командной строке
Переменная %0
 
Полезные ссылки и утилиты

WSH (VBScript, JScript)
Программирование "удобняшек" на VBScript

Примечания:
• Большие куски кода заключайте в тэг [ more ]
• Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте код без пробелов иначе сценарий может работать неправильно. Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

Всего записей: 9654 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: YuS 2, 08:24 19-06-2021
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Цитата:
я не утверждаю, что эта проблема воспроизведётся где-либо ещё даже при полном совпадении параметров.
https://transfiles.ru/m3b3v
Три варианта, первый нормально отрабатывает, второй, как у вас и третий для проформы, т.е. все три дают разный результат.


----------
Гомосексуальность среди модераторов не является психическим расстройством, несмотря на синонимы этого понятия в русском языке.

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 02:06 08-11-2020 | Исправлено: VVL99, 02:12 08-11-2020
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VVL99

Цитата:
второй, как у вас

Отнюдь. Второй {как, к слову, и третий} вариант (вполне закономерно) не фильтрует кириллицу в cp866 вообще. Т.е. кроме "Изменения" игнорируются также "изменения" и "информация". У меня же фильтр "сработал" избирательно, проигнорировав именно и только "Изменения"...
 
(вариант второй-таки; см. ниже).

----------
http://www.imho.ws

Всего записей: 1207 | Зарегистр. 12-10-2006 | Отправлено: 09:32 08-11-2020 | Исправлено: BorlandIMHO, 01:43 09-11-2020
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Для ясности остаётся обменяться результатами, всех трёх вариантов.
 
Добавлено:
https://jpegshare.net/images/e6/56/e6563fed2ee596b16005f3896d02ed03.png
Сверху вниз 1,2,3.
 
Добавлено:
YuS 2 (пост)
Цитата:
- это странно, конечно... не знал, что findstr так косячит...
А закономерность можно выявить в вашем примере.  
YuS 2 (пост)
Цитата:
не работает даже так:  
 
Код:
echo ffffaaa|findstr "ffaa faffaffddd"
 

А так работает:
Код:
echo ffffaaa|findstr "ffaa faffaffaaa"

Код:
echo ffffaaa|findstr "ffaa faffaff"

Код:
echo ffffaaa|findstr "ffaa faffaffaa"

 
Добавлено:
А так уже не работает:
Код:
echo ffffaaa|findstr "ffaa faffaffa"


----------
Гомосексуальность среди модераторов не является психическим расстройством, несмотря на синонимы этого понятия в русском языке.

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 16:54 08-11-2020 | Исправлено: VVL99, 17:58 08-11-2020
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ещё выводить информацию с адресом файла и номером строки -  
https://jpegshare.net/images/bb/5f/bb5f9faaea953c87a3763cfc7accf5b8.png

----------
Гомосексуальность среди модераторов не является психическим расстройством, несмотря на синонимы этого понятия в русском языке.

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 19:12 08-11-2020
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VVL99
Ok, теперь я убедился, что мой вариант действительно второй. Неправильная кодировка запроса.
Картинку постить не буду, ибо идентична вашей.
 
Тем не менее - продолжу настаивать, что это - косяк findstr: никаких упоминаний в справке программы, в т.ч. онлайновой на сайте M$, о том, что программа сама домысливает что имелось в виду и ищет слова в кодировке отличной от кодировки запроса (по факту - слова, отличные от заданного) мне найти не удалось; фиг бы с ним, если бы эта недокументированная фича нормально работала, но именно из-за "тут работаем, тут нет" я и не смог понять, что дело в неправильной кодировке запроса...
 
Спасибо за помощь и потраченное время.
 

Цитата:
А так работает ... А так уже не работает:

Не могу врубиться в закономерность. Но сильно подозреваю, что всё дело в том, что (как и в случае с кириллицей) программа чего-то сама себе домысливает вместо того, чтобы тупо искать байтовую последовательность согласно заданной командной строке, и в результате выдаёт неверный результат.
Полагаться на результат недокументированно самостоятельной программы по-любому нельзя...

----------
http://www.imho.ws

Всего записей: 1207 | Зарегистр. 12-10-2006 | Отправлено: 01:42 09-11-2020 | Исправлено: BorlandIMHO, 02:03 09-11-2020
YuS 2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VVL99  Цитата

Цитата:
А закономерность можно выявить в вашем примере.

Откровенно говоря, никаких закономерностей искать не хочется.
Утилита имеет документацию и в ней сказано:

Цитата:
Использовать пробелы для разделения нескольких искомых строк, если аргумент не
имеет префикса /C. Например, 'FINDSTR "Привет мир" a.b' ищет "Привет" или
"мир" в файле a.b
, а команда 'FINDSTR /C:"Привет мир" a.b' ищет строку
"Привет мир" в  файле a.b.

т.е. команда:

Код:
echo ffffaaa|findstr "ffaa faffaffddd"

обязана искать "ffaa" или "faffaffddd" в строке "ffffaaa", переданной по конвейеру, но она этого не делает, то бишь совпадения не находит, хотя фактически оно есть.
Также я провел эксперименты именно с файлом, строго по документации, результаты "впечатлили" ещё больше... в общем, это какая-то поделка ученика средней школы, который только начал изучать программирование - на большее не тянет.
При такой вот "работоспособности", никакая скорострельность не нужна... от программы сначала требуется выполнение предсказуемых действий, а потом уже всё остальное. В случае с findstr, предсказуемость стремится к нулю, а если учесть ещё и "широкие" возможности "регэкспов", то ну её нафик, утилиту такую... встроенная в систему альтернатива для неё, есть и работает надежно (речь про powershell, а не про find, если что ).

Всего записей: 3195 | Зарегистр. 03-02-2009 | Отправлено: 11:58 09-11-2020 | Исправлено: YuS 2, 12:17 09-11-2020
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS 2

Цитата:
никаких закономерностей искать не хочется.  
Утилита имеет документацию
Это точно.
 
YuS 2 (пост)
Цитата:
т.е. команда:  
 
Код:
echo ffffaaa|findstr "ffaa faffaffddd"
 
обязана искать "ffaa" или "faffaffddd" в строке "ffffaaa"
Причём от количества символов второго слова строки, а также и от самих символов зависит результат, несмотря на явное совпадение первого слова строки.
https://ss64.com/nt/findstr.html >> Bugs
Но тем не менее все этой командой пользуются и наступают на одни и те же грабли.
 
BorlandIMHO
Цитата:
это - косяк findstr: никаких упоминаний в справке программы
Косяков у неё достаточно много.

Цитата:
ищет слова в кодировке отличной от кодировки запроса
А кодировка это большой гвоздь, который может похоронить много чего.

Вот набросал, но не знаю зачем - https://transfiles.ru/ehqo7


----------
Гомосексуальность среди модераторов не является психическим расстройством, несмотря на синонимы этого понятия в русском языке.

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 01:08 10-11-2020
YuS 2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VVL99

Цитата:
Но тем не менее все этой командой пользуются и наступают на одни и те же грабли.

Она достаточно привлекательна в плане быстродействия, умения обработки объемных файлов, наличия хоть и калечных, но регэкспов, а также присутствия во многих версиях windows... поэтому идейные противники нового или просто сомневающиеся по поводу всяких повершеллов и предпочитают использовать эти грабли...
А ведь, все эти плюсы ничего не стоят, если сам поиск, как оказалось, совсем ненадежен, да плюс ещё и другие недостатки... ну да ладно, это право каждого делать свой выбор...

Всего записей: 3195 | Зарегистр. 03-02-2009 | Отправлено: 08:47 10-11-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужен скрипт Число прописью, ни у кого нет в закромах или встречали на просторах?

Код:
PS> script -number 112
PS> сто двенадцать

Параметром указываем число, скрипт выдает это число прописью.

Всего записей: 3002 | Зарегистр. 16-08-2012 | Отправлено: 22:02 10-11-2020
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
YuS 2

Цитата:
обязана искать "ffaa" или "faffaffddd" в строке "ffffaaa", переданной по конвейеру, но она этого не делает, то бишь совпадения не находит, хотя фактически оно есть.

Win 10 x64 - находит.

----------
Разум когда-нибудь победит

Всего записей: 2387 | Зарегистр. 09-02-2003 | Отправлено: 22:53 10-11-2020
farag



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
https://github.com/dfinke/PowerShellHumanizer
3 ссылка...

Всего записей: 1711 | Зарегистр. 27-07-2009 | Отправлено: 23:22 10-11-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
https://github.com/dfinke/PowerShellHumanizer
3 ссылка...

А на русском умеет?
Где там 3 ссылка?
 
А методы расширения, там, надо бы по изучать…
 
з.ы.
GitHub - Humanizr/Humanizer: Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities
сама библиотека, русский вроде как есть.

----------
Спасибо медикам!

Всего записей: 3002 | Зарегистр. 16-08-2012 | Отправлено: 23:31 10-11-2020 | Исправлено: iNNOKENTIY21, 09:34 11-11-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313 Командная строка, батники, сценарии (bat, cmd)

Цитата:
При работе ps1 весь красный и ругается, что не удается найти параметр соответствующий имени параметра "File"

Для устаревших виндов/powershell-ов, должно работать так:

Код:

# Переход во временную папку
cd $env:TEMP
 
# Создание тестовой структуры - папок
[void] (mkdir test)
[void] (mkdir test\test1)
[void] (mkdir test\test2)
[void] (mkdir test\test3)
 
# Создание тестовой структуры - файлов
echo "" > test\test1\file.test
echo "" > test\test2\file2.test
echo "" > test\test3\file.test
echo "" > test\test3\file.test2
 
# Сам скрипт собственно
ls -Filter "file.t*" -Recurse -ErrorAction SilentlyContinue -Force | select -Property Directory -Unique | % { attrib +r $_.Directory.FullName }
 
# Проверка, test1, test3 - Mode d-r = directory, readonly
ls test

 
весь код можно копи-пастить в консоль powershell. Перед убедитесь, что нету во временной папке, папки test.

----------
Спасибо медикам!

Всего записей: 3002 | Зарегистр. 16-08-2012 | Отправлено: 09:17 11-11-2020 | Исправлено: iNNOKENTIY21, 09:29 11-11-2020
YuS 2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis

Цитата:
Win 10 x64 - находит.

Потому и говорю:
 Цитата

Цитата:
Десятки разные бывают...

LTSC x64 не находит...  

 
и это повод позабыть навсегда, что такое findstr, в принципе
 
Добавлено:
iNNOKENTIY21  Цитата

Цитата:
Параметром указываем число, скрипт выдает это число прописью.

Когда-то в Excel был скрипт на VB...
Есть вот такой скрипт, по-моему переведен именно из VB:

Код:
# http://forum.oszone.net/post-2500293.html#post2500293
Function Amount {
    param ($Argument)
    $Arg1 = @("", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
    $Arg2 = @("", "десять ", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", "восемьдесят ", "девяносто ")
    $Arg3 = @("", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", "восемьсот ", "девятьсот ")
    $Arg4 = @("", "одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
    $Arg5 = @("десять ", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать ")
    If ($Argument -le 0) {
        "ноль"
        break
    }
    $Units = Levels -Number $Argument -Degree 1  
    $Dozen = Levels -Number $Argument -Degree 2
    $Hundred = Levels -Number $Argument -Degree 3
    $Thousand = Levels -Number $Argument -Degree 4
    $Dozen_Thousand = Levels -Number $Argument -Degree 5
    $Hundred_Thousand = Levels -Number $Argument -Degree 6
    $millions = Levels -Number $Argument -Degree 7
    $Dozen_Millions = Levels -Number $Argument -Degree 8
    switch -Regex ($millions) {
        1 {$millions_text = $Arg1[$millions] + "миллион "}
        "[2-4]" {$millions_text = $Arg1[$millions] + "миллиона "}
        "[5-9]" {$millions_text = $Arg1[$millions] + "миллионов "}
    }
    switch -Regex ($Dozen_Millions) {
        1 {$millions_text = $Arg5[$millions] + "миллионов "; break}
        "[2-9]" {$Dozen_Millions_text = $Arg2[$Dozen_Millions]}
    }
    switch -regex($Thousand){
        0 { If ($Dozen_Thousand -gt 0) { $Thousand_text = $Arg4[$Thousand] + "тысяч "}}
        1 {$Thousand_text = $Arg4[$Thousand] + "тысяча "}
        "[2-4]" {$Thousand_text = $Arg4[$Thousand] + "тысячи "}
        "[5-9]" {$Thousand_text = $Arg4[$Thousand] + "тысяч "}
    }
    switch -Regex ($Dozen_Thousand){
        1 {$Thousand_text = $Arg5[$Thousand] + "тысяч "; break}
        "[2-9]" {$Dozen_Thousand_text = $Arg2[$Dozen_Thousand]}
    }
    $Hundred_Thousand_text = $Arg3[$Hundred_Thousand]
    If (($Dozen_Thousand -eq 0) -And ($Thousand -eq 0) -And ($Hundred_Thousand -gt 0)) {
        "тысяч"
        $Hundred_Thousand_text = $Hundred_Thousand_text + " тысяч "
    }
    $Units_text = $Arg1[$Units]
    switch -Regex ($Dozen){
        1 {$Units_text = $Arg5[$Units]}
        "[2-9]" {$Dozen_text = $Arg2[$Dozen]}
    }
    $Hundred_text = $Arg3[$Hundred]
    $Amount = $Dozen_Millions_text + $millions_text + $Hundred_Thousand_text + $Dozen_Thousand_text + $Thousand_text + $Hundred_text + $Dozen_text + $Units_text
    $Amount
}  
Function Levels {
    param ($Number, $Degree)
    [Math]::Floor([Math]::Floor($Number - ([Math]::Pow(10,$Degree)) * ([Math]::Floor($Number / ([Math]::Pow(10,$Degree))))) / ([Math]::Pow(10,$Degree-1)))
}

авторство не мое, первой строкой ссылка на источник...

Всего записей: 3195 | Зарегистр. 03-02-2009 | Отправлено: 09:26 11-11-2020 | Исправлено: YuS 2, 11:34 11-11-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS 2

Цитата:
# http://forum.oszone.net/post-2500293.html#post2500293

Amount 102000000


----------
Спасибо медикам!

Всего записей: 3002 | Зарегистр. 16-08-2012 | Отправлено: 11:22 11-11-2020
YuS 2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
Amount 102000000

весело
но принцип, думаю понятен, можно и самим дорабатывать...

Всего записей: 3195 | Зарегистр. 03-02-2009 | Отправлено: 11:37 11-11-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ALEKCEN Командная строка, батники, сценарии (bat, cmd)
В powershell вывод можно и форматировать как захочется.

Код:
Get-Service | % {"net start {0}`nsc config {0} start={1}" -f $_.Name, $_.StartType} | Out-File services.txt

Команда выше создаёт файл services.txt в текущей папке,
первые строки этого файла:

Код:

net start AarSvc_77d53
sc config AarSvc_77d53 start=Manual
net start AJRouter
sc config AJRouter start=Manual
net start ALG
sc config ALG start=Manual
net start AppIDSvc

 
Вывод форматируется здесь: "net start {0}`nsc config {0} start={1}" -f $_.Name, $_.StartType
    где:
  • в кавычках - то, что будет показываться, в нашем случае выводится в файл
  • фигурные скобки - вместо них будут подставляться значения, которые идут после -f и через запятую, первое вместо 0, второе вместо 1. т.е. {0} будет подставлено имя сервиса, а {1} будет заменено на StartType.
  • `n - с новой строки


----------
Спасибо медикам!

Всего записей: 3002 | Зарегистр. 16-08-2012 | Отправлено: 12:02 11-11-2020
KiloSub



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21, после start= рекомендуется пробел, и  

Код:
start= Manual demand
start = Automatic auto

Всего записей: 359 | Зарегистр. 30-05-2020 | Отправлено: 12:48 11-11-2020 | Исправлено: KiloSub, 12:50 11-11-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KiloSub

Цитата:
после start= рекомендуется пробел, и … 

Это вы уж сами, как вам нужно, я принцип показал замену слов можно и потом или как то так:
Код:
Get-Service | % {"net start {0}`nsc config {0} start= {1}" -f $_.Name, $_.StartType -Replace "Manual", "demand" -replace "Automatic", "auto"} | Out-File services.txt

Я предпочитаю PS и его инструменты:
Код:
Get-Service | Export-Clixml services.xml
и когда надо
Код:
$предыдущий_список_служб = Import-Clixml .\services.xml
$предыдущий_список_служб | ? StartType -eq 3 | select name, starttype

и другие командлеты управления службами:
Код:
gcm *-service

Всего записей: 3002 | Зарегистр. 16-08-2012 | Отправлено: 14:21 11-11-2020
farag



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
А на русском умеет?  

Блин, все, что смог найти через телефон.
 

Цитата:
Где там 3 ссылка?  

3 ссылка в Google была.
 
Работает, оно?

Всего записей: 1711 | Зарегистр. 27-07-2009 | Отправлено: 14:40 11-11-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru