我是這個論壇的新手,所以我首先要感謝您在我成爲成員之前向我提供解決方案:)。無法從批處理腳本中的失敗MOVE命令中獲取錯誤級別
所以我有這樣的代碼:
for %%a in ("%PBpath%") do (
move "network location 1 files" "network location 2" >NUL
if ERRORLEVEL 0 (echo Diagram %%~na.pdf was successfuly archived) else (echo Diagram %%~na.pdf was not archived)
ECHO.%errorlevel%
)
的問題是,我不能比0不同,即使是要複製從位置缺少文件,我仍然得到了錯誤級別成功的歸檔消息迴應。我在論壇上搜索了類似的問題,但由於某種原因,我無法完成工作。 複製和ping命令之間有什麼不同(ping命令返回錯誤級別中的正確退出代碼),因爲我無法獲得它與任何複製或移動...
謝謝! 安德魯
謝謝您的回答。 Superbob的答案確實解決了我的問題,非常感謝。這確實是違反直覺的行爲。 但是,我的示例中的ECHO。%errorlevel%命令仍然返回0,因此在我的情況下它不會設置爲1。 至於Endoro的回答,你能更具體嗎?我嘗試使用%ERRORLEVEL%== 0,因爲沒有其他選項可以將errorlevel用作變量,但這裏也沒有結果。 – user2844129
IF ERRORLEVEL 1和ECHO之間是否有任何語句?%errorlevel%?如果是這樣,他們可以重置錯誤級別。我只是嘗試'如果ERRORLEVEL 1(回聲ErrorLevel%ERRORLEVEL%,文件未存檔)其他(回聲ErrorLevel%ERRORLEVEL%,文件成功存檔)'並得到了預期的結果'ErrorLevel 1,文件未存檔' – Superbob
不,我不'中間沒有任何東西,但是你是對的,它是有效的。問題在於我在for循環中回顯'%ERRORLEVEL%',並且啓用了DelayedExpansion。我必須使用!它的工作。感謝您的幫助! – user2844129