以下代碼始終顯示0作爲錯誤級別,但是當複製命令在for循環命令之外完成時,它會返回非零錯誤級別。通過批處理循環執行命令的錯誤級別
for /f "usebackq delims=" %%x in (`copy x y`) do (
set VAR=%%x
)
ECHO Errorlevel = %ERRORLEVEL%
ECHO VAR = %VAR%
是否可以獲得for循環執行的複製命令的錯誤級別?
以下代碼始終顯示0作爲錯誤級別,但是當複製命令在for循環命令之外完成時,它會返回非零錯誤級別。通過批處理循環執行命令的錯誤級別
for /f "usebackq delims=" %%x in (`copy x y`) do (
set VAR=%%x
)
ECHO Errorlevel = %ERRORLEVEL%
ECHO VAR = %VAR%
是否可以獲得for循環執行的複製命令的錯誤級別?
我假設你正在將文件從一個目錄複製到另一個目錄?如果是這樣,你可以做這樣的事情,而不是:
@echo off
setlocal EnableDelayedExpansion
set ERR=0
for %%x in (x) do (
copy %%x y
set ERR=!errorlevel!
set VAR=%%x
)
ECHO Errorlevel = %ERR%
ECHO VAR = %VAR%
延遲擴展需要得到循環,而不是裏面的值ERRORLEVEL的實際值在進入循環之前。
如果這不是你想要做的,請澄清你的目標。
它適合我!您只需將包含複製命令的文本文件(7200行;例如: 複製2_97691_Scan.pdf O:\ Data \ Dev \ Mins \ PDFScan2 \ 2011 \ 4 \ 2_97691_Scan)放入DO括號 中進行錯誤檢查。 PDF), 我可以運行
@echo off
setlocal EnableDelayedExpansion
for /F "delims=" %%I in (CopyCurrentPDFs.txt) do (
%%I
if !errorlevel! NEQ 0 echo %%I>>errorcopy.txt
)
這裏的重要一點是'EnableDelayedExpansion' – 2012-07-27 16:30:08
謝謝 - 它爲我工作! – 2014-12-04 23:35:31
警告:根據原始問題,這是一個FOR/F' *文件*循環的解決方案,而不是'FOR/F' *命令*循環。請參閱:[「FOR/F命令循環中的ERRORLEVEL返回意外的結果」](http://stackoverflow.com/questions/38515054/errorlevel-in-for-f-command-loop-with-en- delayedexpansion-返回-unexpected) – 2016-07-21 23:25:11
我試圖解析爲一個可執行輸出(副本只是一個簡單的例子)以下的批處理文件,但我想知道這是否可執行返回一個錯誤。 – Josh 2010-06-21 23:06:53
好的。我不確定你是否可以獲得由for循環執行的命令的錯誤級別,而不用像我的例子那樣分離它們,也許別人可以提供更好的答案。 – WildCrustacean 2010-06-22 13:15:05