CMD/BAT - [решено] перечисление аргументов

Аватара пользователя
Freddy1984

CMD/BAT - [решено] перечисление аргументов

Сообщение Freddy1984 »

Приветствую.

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

Подробнее:

if exist xxx.txt find /i "404 Not Found" ........



То есть в данном случае в txt ищется аргумент в виде 404 Not Found, и если он 404, то дальше происходит то-то и тото....

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



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

Спасибо.
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] перечисление аргументов

Сообщение megaloman »

Вот вариант

Код:

Код: Выделить всё

@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

Re: CMD/BAT - [решено] перечисление аргументов

Сообщение megaloman »

Цитата greg zakharov:



[4-5]0[1,3,4]
CMD/BAT - [решено] перечисление аргументов




можно вас попросить расшифровать значение этих цифр?

И ещё доп. вопросик. Если у примеру мне ещё понадобится добавить ответ от сервака к примеру 500 Internal Server Error, то как я понял надо будет сделать так [not|forbidden|Internal Server Error] ??
Аватара пользователя
greg zakharov

Re: CMD/BAT - [решено] перечисление аргументов

Сообщение greg zakharov »

findstr — да, но я бы делал не регуляркой, а тупым перечислением (на будущее):



Код:

Код: Выделить всё

type "xxx.txt" | findstr.exe /i /l /c:"404 Not Found" /c:"403 Forbidden" /c:"501 Not Implemented" && (
    echo Found
)

Update:[/i] ну, собственно, вот будущее:


Цитата Freddy1984:



Если у примеру мне ещё понадобится добавить ответ от сервака
CMD/BAT - [решено] перечисление аргументов




уже и наступило Изображение.



Код:

Код: Выделить всё

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
)
Аватара пользователя
Iska

Re: CMD/BAT - [решено] перечисление аргументов

Сообщение Iska »

Цитата Freddy1984:



можно вас попросить расшифровать значение этих цифр?



Это шаблон числового значения, который должен присутствовать в строке.


Цитата Iska:



но я бы делал не регуляркой



А аргументы в пользу перечисления? Ну будете Вы искать строки дословно и что? Или Вы полагаете, что за раз все заданные выражения из потока извлекутся? И потом, проще подправить регулярку, например:



Код:

Код: Выделить всё

findstr /irc:"[4-5]0[0-1,3-4] [not|int|for]" xxx.txt

чем набивать новое выражение для поиска. Но, есть одно обстоятельство, умаляющее роль штатного инструментария Windows (в том числе findstr). Во-первых, ограничение длины строки, накладываемое на findstr, то есть при использовании регулярок захватывается не часть строки (как это делает, например, grep), а строка целиком, и если длина строки превышает предельно допустимую, выводится соответсвующее сообщение. То же, кстати, справедливо и для поиска со строгим соответствием (ключ /L), а раз так, а также то, что регулярки значительно компактней, то и смысл затевать перечисления невелик. По этой причине лучше использовать:

1) более продвинутые инструменты поиска соответствий в строке

2) регулярные выражения[/i]
Аватара пользователя
Freddy1984

Re: CMD/BAT - [решено] перечисление аргументов

Сообщение Freddy1984 »

Цитата greg zakharov:



А аргументы в пользу перечисления?
CMD/BAT - [решено] перечисление аргументов




Я ж написал — так проще для коррекции списка, нежели подбирать регулярки. И посему никак не могу согласиться с Вами в:


Цитата greg zakharov:



проще подправить регулярку, … чем набивать новое выражение для поиска.
CMD/BAT - [решено] перечисление аргументов




В чём проблема регулярок как таковых? В маловменяемости шаблонов для понимания, в жёстком ограничении на входные данные.
Аватара пользователя
Freddy1984

Re: CMD/BAT - [решено] перечисление аргументов

Сообщение Freddy1984 »

Цитата Freddy1984:



можно вас попросить расшифровать значение этих цифр?



Это шаблон числового значения, который должен присутствовать в строке.


Цитата Iska:



но я бы делал не регуляркой



А аргументы в пользу перечисления? Ну будете Вы искать строки дословно и что? Или Вы полагаете, что за раз все заданные выражения из потока извлекутся? И потом, проще подправить регулярку, например:



Код:

Код: Выделить всё

findstr /irc:"[4-5]0[0-1,3-4] [not|int|for]" xxx.txt

чем набивать новое выражение для поиска. Но, есть одно обстоятельство, умаляющее роль штатного инструментария Windows (в том числе findstr). Во-первых, ограничение длины строки, накладываемое на findstr, то есть при использовании регулярок захватывается не часть строки (как это делает, например, grep), а строка целиком, и если длина строки превышает предельно допустимую, выводится соответсвующее сообщение. То же, кстати, справедливо и для поиска со строгим соответствием (ключ /L), а раз так, а также то, что регулярки значительно компактней, то и смысл затевать перечисления невелик. По этой причине лучше использовать:

1) более продвинутые инструменты поиска соответствий в строке

2) регулярные выражения[/i]
Аватара пользователя
Iska

Re: CMD/BAT - [решено] перечисление аргументов

Сообщение Iska »

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

Вернуться в «Скриптовые языки администрирования Windows»