1 (изменено: Andrey_hello, 2012-10-03 15:07:31)

Тема: CMD/BAT: Одинаковый errorlevel при успехе и при неуспехе

Создаю cmd файл для замены файлов в одной директории такими же (обновленными) файлами из другой директории.

Файлов много и надо знать все ли замены выполнены, но команда replace выдает один и тот же код завершения - 0.

replace /R .\aaa\124.h .\bbb
echo %errorlevel%
replace /R .\aaa\_124.h .\bbb
echo %errorlevel%

файла _124.h не существует, но результат выполнения cmd-шника

Замена ...
0
0

Как проанализировать результат выполнения команды?

------------
При таком варианте
call replace /R .\aaa\124.h .\bbb || set /A err=err + 1
echo %errorlevel%
call replace /R .\aaa\_124.h .\bbb || set /A err=err + 1
echo %errorlevel%
echo %err%

Выводит
Замена ...
0
0
0

Такой вариант тоже не работает:
call replace /R .\aaa\124.h .\bbb
IF ERRORLEVEL 1 ECHO error level is 1 or more
call replace /R .\aaa\_124.h .\bbb
IF ERRORLEVEL 1 ECHO error level is 1 or more // Это echo должно быть напечатано, но не выводится

2

Re: CMD/BAT: Одинаковый errorlevel при успехе и при неуспехе

не поверите
echo %ERRORLEVEL%

Я конечно далек от мысли... (с)

3

Re: CMD/BAT: Одинаковый errorlevel при успехе и при неуспехе

smaharbA пишет:

не поверите
echo %ERRORLEVEL%

Ещё пробовал IF ERRORLEVEL
----------------------------------------

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

Видать без проверок наличия файлов не обойтись...

4

Re: CMD/BAT: Одинаковый errorlevel при успехе и при неуспехе

copy .\aaa\124.h nul > nul 2>&1 && replace /R .\aaa\124.h .\bbb
echo %ERRORLEVEL%
Я конечно далек от мысли... (с)

5

Re: CMD/BAT: Одинаковый errorlevel при успехе и при неуспехе

Спасибо за помощь!

Почти так и сделал. В принципе это и есть проверки.