Войти

Показать полную графическую версию : [решено] *CMD/BAT* | Условное выполнение в батнике


pva
10-07-2006, 20:30
тов.умные люди, скажите плз, как сделать следующее (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
pva
А разве в батниках нет чтото типа GOTO или я путаю??

hasherfrog
13-07-2006, 22:02
См. 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
Сработало! Спасибо!




© OSzone.net 2001-2012