Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] перечисление аргументов

Ответить
Настройки темы
CMD/BAT - [решено] перечисление аргументов

Аватара для Freddy1984

Старожил


Сообщения: 147
Благодарности: 9

Профиль | Цитировать


Приветствую.
Подскажите пожалуйста, возможно ли перечислить аргументы?
Подробнее:
if exist xxx.txt find /i "404 Not Found" ........

То есть в данном случае в txt ищется аргумент в виде 404 Not Found, и если он 404, то дальше происходит то-то и тото....
Мне необходимо добавить ещё пару ответов от сервера для аргумента (403 Forbidden, 501 Not Implemented), то есть что бы аргумент работал в виде - вижу либо первое, либо второе, либо третье, тогда делаю то-то и то-то..

Подскажите пожалуйста, как перечислить аргументы в моём случае??
Спасибо.

Отправлено: 17:34, 13-06-2017

 

Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Вот вариант
Код: Выделить весь код
@Echo Off
Cls 

Set "FileIn=xxx.txt"

Set /A Found=0
If Exist "%FileIn%" (
	find /i "404 Not Found" "%FileIn%" >Nul &&Set /A Found=1
	find /i "403 Forbidden" "%FileIn%" >Nul &&Set /A Found=1
	find /i "501 Not Implemented" "%FileIn%" >Nul &&Set /A Found=1
)
If %Found%==1 Echo tralala
pause
Чуть короче, но медленнее
Код: Выделить весь код
@Echo Off
Cls 

Set "FileIn=xxx.txt"

Set /A Found=0

find /i "404 Not Found" "%FileIn%" >Nul &&Set /A Found=1
find /i "403 Forbidden" "%FileIn%" >Nul &&Set /A Found=1
find /i "501 Not Implemented" "%FileIn%" >Nul &&Set /A Found=1

If %Found%==1 Echo tralala
pause

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 13-06-2017 в 19:05.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:57, 13-06-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Код: Выделить весь код
findstr /irc:"[4-5]0[1,3,4] [not|forbidden]" xxx.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:04, 13-06-2017 | #3


Аватара для Freddy1984

Старожил


Сообщения: 147
Благодарности: 9

Профиль | Цитировать


Цитата greg zakharov:
[4-5]0[1,3,4] »
можно вас попросить расшифровать значение этих цифр?
И ещё доп. вопросик. Если у примеру мне ещё понадобится добавить ответ от сервака к примеру 500 Internal Server Error, то как я понял надо будет сделать так [not|forbidden|Internal Server Error] ??

Отправлено: 22:53, 13-06-2017 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


findstr — да, но я бы делал не регуляркой, а тупым перечислением (на будущее):
Код: Выделить весь код
type "xxx.txt" | findstr.exe /i /l /c:"404 Not Found" /c:"403 Forbidden" /c:"501 Not Implemented" && (
    echo Found
)
Update: ну, собственно, вот будущее:
Цитата Freddy1984:
Если у примеру мне ещё понадобится добавить ответ от сервака »
уже и наступило .

Код: Выделить весь код
type "xxx.txt" | findstr.exe /i /l /c:"404 Not Found" /c:"403 Forbidden" /c:"500 Internal Server Error" /c:"501 Not Implemented" && (
    echo Found
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:08, 13-06-2017 | #5


Аватара для Freddy1984

Старожил


Сообщения: 147
Благодарности: 9

Профиль | Цитировать


Цитата Iska:
уже и наступило »

Отправлено: 23:24, 13-06-2017 | #6


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Цитата Freddy1984:
можно вас попросить расшифровать значение этих цифр?
Это шаблон числового значения, который должен присутствовать в строке.
Цитата Iska:
но я бы делал не регуляркой
А аргументы в пользу перечисления? Ну будете Вы искать строки дословно и что? Или Вы полагаете, что за раз все заданные выражения из потока извлекутся? И потом, проще подправить регулярку, например:
Код: Выделить весь код
findstr /irc:"[4-5]0[0-1,3-4] [not|int|for]" xxx.txt
чем набивать новое выражение для поиска. Но, есть одно обстоятельство, умаляющее роль штатного инструментария Windows (в том числе findstr). Во-первых, ограничение длины строки, накладываемое на findstr, то есть при использовании регулярок захватывается не часть строки (как это делает, например, grep), а строка целиком, и если длина строки превышает предельно допустимую, выводится соответсвующее сообщение. То же, кстати, справедливо и для поиска со строгим соответствием (ключ /L), а раз так, а также то, что регулярки значительно компактней, то и смысл затевать перечисления невелик. По этой причине лучше использовать:
1) более продвинутые инструменты поиска соответствий в строке
2) регулярные выражения

Отправлено: 09:12, 14-06-2017 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата greg zakharov:
А аргументы в пользу перечисления? »
Я ж написал — так проще для коррекции списка, нежели подбирать регулярки. И посему никак не могу согласиться с Вами в:
Цитата greg zakharov:
проще подправить регулярку, … чем набивать новое выражение для поиска. »
В чём проблема регулярок как таковых? В маловменяемости шаблонов для понимания, в жёстком ограничении на входные данные.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:39, 14-06-2017 | #8


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Цитата Iska:
В чём проблема регулярок как таковых? В маловменяемости шаблонов для понимания, в жёстком ограничении на входные данные.
Эти условия соответсвуют правде тогда (и только тогда), когда регулярные выражения либо не знают, либо не понимают. А список - это не аргумент. Представьте сто (или более) шаблонных строк, имеющих схожие признаки. Вы будете составлять список или все же будете использовать регулярное выражение из пары десятков символов? Можно было бы сказать, что выбор очевиден (а он и впрямь очевиден), но хотелось бы выслушать Ваши контраргументы и увидеть очередные благодарности к ним со стороны третьих лиц

Отправлено: 10:20, 14-06-2017 | #9


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


greg zakharov, проблема в ложных срабатываниях, т.к. шаблон шире. Сейчас это прокатывает, т.к. по сути автору нужно отфильтровать всё, что не "200 OK"

Отправлено: 10:49, 14-06-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] перечисление аргументов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Вызов функции с определённым количеством аргументов Паразит AutoIt 2 13-02-2017 13:04
Debian/Ubuntu - перечисление команд Костя_Лу@vk Общий по Linux 13 08-01-2016 20:22
запись аргументов в формате файлов INF semiono AutoIt 5 19-10-2011 00:22
Теория - Число функций n аргументов? Gamover jr Программирование и базы данных 13 30-10-2007 09:25
Перечисление объектов типов vasketsov Программирование и базы данных 3 24-04-2002 17:32




 
Переход