Войти

Показать полную графическую версию : Проверка на выполнения команд в bat ?


men232
21-12-2010, 21:38
Привет есть такой код:
curl -f -# -o %name% %url%
Так вот во время выполнения этого кода (То есть скачивание файла может произойти разрыв)
Как мне проверять выполнилась эта команда окончательно ?

amel27
11-01-2011, 11:55
проверить переменную ERRORLEVEL или так:
curl -f -# -o %name% %url% && (Echo OK& Rem.) || Echo ERROR

Iska
11-01-2011, 21:17
amel27, не понятно это:
…& Rem. …
Поясните, пожалуйста.

amel27
12-01-2011, 04:33
не понятно это »
REM. - простейшая команда, сбрасывающая ERRORLEVEL в 0. Это на случай, если вместо "Echo OK" стоит последовательность произвольных команд, которые могут изменить значение ERRORLEVEL. Чтобы было понято, достаточно сравнить результат кода с REM. и без него:
@Set $1=1 && (
Echo OK
Set "$2="
REM.) || (
Echo ERROR
)

Суть в том, что в последовательности команд, разделенной && , || батник пытается последовательно выполнить КАЖДУЮ, в зависимости от текущего ERRORLEVEL (на момент выполнения заданной команды), поэтому нужно либо отслеживать результат каждой команды, либо тупо восстанавливать ERRORLEVEL по выходу из блока.

P.S. команда Set "$2=" вызывает ошибку удаления несуществующей переменной, устанавливая ERRORLEVEL=1

Iska
12-01-2011, 22:23
…в зависимости от текущего ERRORLEVEL (на момент выполнения заданной команды), …»
Спасибо. Теперь ясно.




© OSzone.net 2001-2012