0

배치 스크립트 내에서 두 가지 작업이 발생했습니다. 첫 번째 작업에서는 .xml 파일을 사용하여 파일의 내용을 제거하는 .exe 파일을 호출합니다.배치 스크립트 오류 수준 지원

FOR /F "tokens=1 delims=/" %%H in ('DIR /B c:\directory\*') do c:\Progra~1\scrub-prog\scrubber.exe c:\Progra~1\scrub-prog\scrubber.xml c:\%%H 

두 번째 작업은 psftp (putty ftp)를 통해 스크럽 된 파일을 전송하는 것입니다.

echo n | psftp.exe [email protected] -i id_rsa.ppk -v -b psftp-rules.txt -bc >> c:\log-file.txt 

필요한 조치는 각각의 오류 수준을 개별적으로 확인하는 것입니다. errorlevel이 0이면 프로세스를 계속 진행하고 성공 메시지를 선택한 파일에 에코합니다.

errorlevel이 0이 아닌 경우 즉시 종료하고 스크립트를 종료하고 선택한 파일에 오류 메시지가 표시되도록해야합니다.

답변

0

errorlevel은 변수 %errorlevel%에 설정되어 있습니다. 간단한 if 문을 사용할 수 있습니다. 다른 방법

if errorlevel 1 echo command failed>>log.txt&goto :EOF 

는 - 오류 수준은 이전 명령에 의해 설정되어있는 경우

if %errorlevel%==1 echo command failed>>log.txt&goto :EOF 

또는 명령의 끝에서 ||을 사용할 수, || 후 모든 코드는 실행됩니다.

FOR /F "tokens=1 delims=/" %%H in ('DIR /B c:\directory\*') do c:\Progra~1\scrub-prog\scrubber.exe c:\Progra~1\scrub-prog\scrubber.xml c:\%%H || echo failed at c:\%%H>>log.txt&goto :EOF 
+0

'아니더라도 % ERRORLEVEL - 당신이 실패 할 수 있습니다 스크러버 명령에 종료하려는 경우 위의 루프 전체의 끝에서 종료 실패

FOR /F "tokens=1 delims=/" %%H in ('DIR /B c:\directory\*') do ( c:\Progra~1\scrub-prog\scrubber.exe c:\Progra~1\scrub-prog\scrubber.xml c:\%%H ) || echo command failed>>log.txt&goto :EOF 

, 다음을 수행 할 수 % == 0 echo command failed >> log.txt & goto : EOF' <- 이것은 더 좋으며 0이 아닌 errorlevel을 포착합니다. – foxidrive