2013-11-15 3 views
0

폴더의 새 파일을 확인하는 작은 스크립트가 있는데 모든 PDF 파일이 인쇄됩니다. 인쇄가 실패 할 때마다 변수 %errorlevel%은 1이 될 것입니다. goto와 레이블을 사용하여 if 문을 사용하여 작동하도록하려하지만 무슨 일이 일어나고 있는지 파악할 수 없습니다.오류가 발생하면 다른 기능을 호출합니다. Windows Batch

스크립트는 다음과 같습니다

:printfile 
echo printing %1 
set fname=%1 
set fullFname="print\STW_Print\STW_Printer_TEST\%fname:~1% 
echo ERLVL: %errorlevel% 
"C:\Program Files (x86)\SumatraPDF\SumatraPDF.exe" -silent -print-to "\\s8011\OPS_2055_IS" % 
echo ERLVL: %errorlevel% 
set logFilename=%DATE:~4,2%-%DATE:~7,2%-%DATE:~10,4% 
if %errorlevel% neq 0 goto error 
echo Moving %fname% to printed 
move %fullFname% STW_printed 
echo %time% %1 Printed on STWTEST and Moved>> Printlogs\TEST-%logFilename%-log.txt 
goto eof 
:error 
echo Moving %fname% to failed 
move %fullFname% STW_failed 
echo %time% %1 Failed on STWTEST and Moved>> Printlogs\TEST-%logFilename%-log.txt 
GOTO eof 

:eof 

스크립트 호출 라인 : 그것은 움직이지 왜

printing "BADTEST (2) - Copy.pdf" 
ERLVL: 0 
ERLVL: 1 
Moving "BADTEST (2) - Copy.pdf" to printed 
    1 file(s) moved. 
printing "BADTEST (2).pdf" 
ERLVL: 0 
ERLVL: 1 
Moving "BADTEST (2).pdf" to printed 
    1 file(s) moved. 
printing "BADTEST (3) - Copy.pdf" 
ERLVL: 0 
ERLVL: 1 
Moving "BADTEST (3) - Copy.pdf" to printed 
    1 file(s) moved. 

내가 알아낼 수 없습니다 :

for /f "tokens=*" %%i in ('dir print\STW_Print\STW_Printer_TEST\*.pdf /b') do (call :printfile "%%i") 

그리고 내 출력을 실패했습니다. 어떤 도움이라도 대단히 감사하겠습니다!

답변

1

오류 수준을 지우는 SET 명령을 수행 한 후에 errorlevel을 확인했기 때문입니다. 'set logfilename ...'행을 더 멀리 위로 이동하십시오. 또한 errorvel을 사용할 때 할 수 있습니다.

if errorlevel 1 goto :error 
관련 문제