![]() |
Поиск строки в файле
Помогите написать bat файл, мне надо проверить есть ли строка в файле
ping -w 200 -n 2 server >x find "TTL" x А дальше не знаю, как продолжить... если есть строка TTL то %windir%\explorer.exe /n, \\server else echo No server |
после find используй if errorlevel
например так Код:
ping -w 200 -n 2 server >x Код:
ping -w 200 -n 1 server |
Elven, искать TTL нужно, ибо одного errorlevel недостаточно. tmpnikl, примеры неоднократно были, поищите по словосочетаниям ping, find и TTL.
|
спасибо....
|
Elven, а почему "if errorlevel 0" ? Так всегда будет выполняться только ветка внутри скобок.
Надо заменить на "if not errorlevel 1". По крайней мере, вплоть до XP это так, поскольку команда вида "if errorlevel ..." проверяет не на точное равенство errorlevel указанному значению, а на "больше или равно". Или можно написать "if %errorlevel%==0". Тогда проверка будет на равенство. Таким образом, приходим к варианту: ping -w 200 -n 2 server >x find "TTL" x if errorlevel 1 (echo No server) else ( %windir%\explorer.exe /n, \\server exit /b ) Поясню: я заменил "if not errorlevel 1" на "if errorlevel 1" с перестановкой веток, чтобы понятнее было, что написано. Потому что "if errorlevel 1" явно указывает на присутствие ошибки (при поиске строки) и на обработку этой ошибки, и не приходится мысленно переворачивать "ошибку" в "не-ошибку". |
Ещё раз спасибо за ответ, а то я тоже не мог понять, почему у меня при errorlevel 0, некорректно отрабатывал батник(при двух разных исходах, все равно выполнялась первая ветка), по интуиции стал ставить в начале 1, и вроде было нормально, непонятно, но работало, а теперь стало понятно почему так...правда не совсем понятна тавталогия ошибка в не обшибку, но суть понятна, в начале надо ставить проверку на ошибки(1,2.. и т.д.), и рассматривать эту ветку...
Да, совсем забыл..., если можно, подскажите(для отработки батника), как можно проверить какой код получил errorlevel, ну что-нибудь типа echo "errorlevel="+str(errorlevel) (Здесь контектация строк, как сделать в батнике это сцепление строк пока не знаю) |
Цитата:
Код:
ping -n 1 server | 1>nul findstr /i "ttl=" && ( |
Просто разные программы могут запускаться, и без документации, и не только пинг, поэтому чтоб знать, что получает системная переменная errorlevel, и хотелось бы знать, какое там(errorlevel) значение с выводом на экран...
|
Цитата:
|
tmpnikl:
Цитата:
Код:
@echo off |
Время: 17:17. |
Время: 17:17.
© OSzone.net 2001-