Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] *CMD/BAT* | Условное выполнение в батнике (http://forum.oszone.net/showthread.php?t=68349)

pva 10-07-2006 20:30 459958

*CMD/BAT* | Условное выполнение в батнике
 
тов.умные люди, скажите плз, как сделать следующее (Windows):
нужно при удачном выполнении комманды @isql -Usa -P1234 -n -Q"exec do_something 100, 200"
напечатать в лог echo %date% %time% done something >> %varlog%\sql-activity.log
при неудачном - ничего не печатать.
Или это слишком сложно (т.е. прогу проще написать)?

vadimiron 13-07-2006 19:43 461170

pva
А разве в батниках нет чтото типа GOTO или я путаю??

hasherfrog 13-07-2006 22:02 461205

См. errorlevel

Формат:
IF [NOT] ERRORLEVEL число команда

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

Теоретически, Ваше @isql -Usa -P1234 -n -Q"exec do_something 100, 200" при неудачном завершении должно выставить ERRORLEVEL отличное от нуля (ноль - как правило - нормальное завершение программ, так принято). Но даже если ERRORLEVEL не будет установлен, можно будет поймать ошибку путём отслеживания вывода в консоль сообещний об ошибке.

Так что результат ориентировочно такой:
Код:

@isql -Usa -P1234 -n -Q"exec do_something 100, 200"
IF NOT ERRORLEVEL 0 echo %date% %time% done something >> %varlog%\sql-activity.log

Или такой:
Код:

@isql -Usa -P1234 -n -Q"exec do_something 100, 200" | find "УНИКАЛЬНАЯЧАСТЬСООБЩЕНИЯООШИБКЕ"
IF NOT ERRORLEVEL 0 echo %date% %time% done something >> %varlog%\sql-activity.log


pva 14-07-2006 14:37 461425

Сработало! Спасибо!


Время: 22:47.

Время: 22:47.
© OSzone.net 2001-