簡體   English   中英

由批處理循環執行的命令的錯誤級別

[英]Errorlevel of command executed by batch for loop

以下代碼始終顯示0作為errorlevel,但是當復制命令在for循環命令之外完成時,它返回非零錯誤級別。

for /f "usebackq delims=" %%x in (`copy x y`) do (
    set VAR=%%x
)
ECHO Errorlevel = %ERRORLEVEL%
ECHO VAR = %VAR%

是否可以獲取for循環執行的復制命令的錯誤級別?

這個對我有用 ! 您只需要將DO括號內的錯誤檢查與包含復制命令的文本文件放在一起(7200行;例如:copy 2_97691_Scan.pdf O:\\ Data \\ Dev \\ Mins \\ PDFScan2 \\ 2011 \\ 4 \\ _27691_Scan.pdf) ,我可以運行以下批處理文件

@echo off

setlocal EnableDelayedExpansion

for /F "delims=" %%I in (CopyCurrentPDFs.txt) do (
%%I
if !errorlevel! NEQ 0 echo %%I>>errorcopy.txt
)

我假設您正在將文件從一個目錄復制到另一個目錄? 如果是這樣,你可以這樣做:

@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的實際值,而不是輸入循環之前的值。

如果那不是您想要做的,請澄清您的目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM