Получение ROBOCOPY возвратить “надлежащий” код выхода?

Действительно ли возможно попросить, чтобы ROBOCOPY вышел с кодом выхода, который указывает на успешность или неуспешность?

Я использую ROBOCOPY в качестве части моих конфигураций сборки TeamCity и имею необходимость добавить, что шаг только к заставляет код выхода замолчать от ROBOCOPY, кажется глупым мне.

В основном я добавил это:

EXIT /B 0

к скрипту, который запускается.

Однако это, конечно, маскирует любые настоящие проблемы, которые возвратил бы ROBOCOPY.

В основном я хотел бы иметь коды выхода 0 для УСПЕХА и ненулевой для ОТКАЗА вместо битовой маски это возвраты ROBOCOPY теперь.

Или, если бы у меня не может быть этого, есть ли простая последовательность пакетных команд, которые перевели бы битовую маску ROBOCOPY к подобному значению?

123
задан 07.05.2011, 16:03

0 ответов

Согласно здесь, Robocopy имеет следующие биты кода выхода, которые составляют код выхода:

0×10 Серьезная ошибка. Robocopy не скопировал файлов. Это - или ошибка использования или ошибка из-за недостаточных прав доступа на источнике или целевых каталогах.

0×08 Некоторые файлы или каталоги не могли быть скопированы (ошибки копии произошли и предел повторной попытки, был превышен). Проверьте эти ошибки далее.

0×04 Некоторые Несогласованные файлы или каталоги были обнаружены. Исследуйте выходной журнал. Обслуживание, вероятно, необходимо.

0×02 Некоторые Дополнительные файлы или каталоги были обнаружены. Исследуйте выходной журнал. Некоторое обслуживание может быть необходимо.

0×01 Один или несколько файлов были скопированы успешно (то есть, новые файлы прибыли).

0×00 Никакие ошибки не произошли, и никакое копирование, был сделан. Источник и целевые деревья каталогов полностью синхронизируются.

Просто добавьте если/еще операторы это EXIT /B 0 когда возвращаемое значение равняется 1 или возможно 0, и EXIT /B 1 иначе. Даже если бы файлы, возможно, были скопированы, существует что-то не так, чему было бы нужно ручное вмешательство.

47
ответ дан 07.12.2019, 07:49

От этой страницы можно добавить раздел к пакетному файлу, который использует список кодов ошибок, чтобы произвести ошибки и выполнить различные разделы кода:

if %ERRORLEVEL% EQU 16 echo ***FATAL ERROR*** & goto end
if %ERRORLEVEL% EQU 15 echo OKCOPY + FAIL + MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 14 echo FAIL + MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 13 echo OKCOPY + FAIL + MISMATCHES & goto end
if %ERRORLEVEL% EQU 12 echo FAIL + MISMATCHES& goto end
if %ERRORLEVEL% EQU 11 echo OKCOPY + FAIL + XTRA & goto end
if %ERRORLEVEL% EQU 10 echo FAIL + XTRA & goto end
if %ERRORLEVEL% EQU 9 echo OKCOPY + FAIL & goto end
if %ERRORLEVEL% EQU 8 echo FAIL & goto end
if %ERRORLEVEL% EQU 7 echo OKCOPY + MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 6 echo MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 5 echo OKCOPY + MISMATCHES & goto end
if %ERRORLEVEL% EQU 4 echo MISMATCHES & goto end
if %ERRORLEVEL% EQU 3 echo OKCOPY + XTRA & goto end
if %ERRORLEVEL% EQU 2 echo XTRA & goto end
if %ERRORLEVEL% EQU 1 echo OKCOPY & goto end
if %ERRORLEVEL% EQU 0 echo No Change & goto end


:END
REM END OF BATCH FILE
13
ответ дан 07.12.2019, 07:49

Я использую это:

robocopy .....
call :REPORT_ERRORLEVEL
goto :EOF

:REPORT_ERRORLEVEL
echo.
if ERRORLEVEL 16 echo ***FATAL ERROR*** & goto :EOF
if ERRORLEVEL 8 echo **FAILED COPIES** & goto :EOF
if ERRORLEVEL 4 echo *MISMATCHES* & goto :EOF
if ERRORLEVEL 2 echo EXTRA FILES & goto :EOF
if ERRORLEVEL 1 echo Copy successful & goto :EOF
if ERRORLEVEL 0 echo –no change– & goto :EOF
8
ответ дан 07.12.2019, 07:49

Теги

Похожие вопросы