通过batch for循环执行命令的错误级别

以下代码始终显示0作为错误级别,但是当复制命令在for循环命令之外完成时,它会返回非零错误级别。

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

有可能得到由for循环执行的复制命令的错误级别?

这个对我有用 ! 您只需将含有复制命令的文本文件(7200行;例如:copy 2_97691_Scan.pdf O:\ Data \ Dev \ Mins \ PDFScan2 \ 2011 \ 4 \ 2_97691_Scan.pdf)置于DO括号内即可进行错误检查。 ,我可以运行下面的批处理文件

 @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 %%xy set ERR=!errorlevel! set VAR=%%x ) ECHO Errorlevel = %ERR% ECHO VAR = %VAR% 

延迟扩展需要获取循环内的错误级别的实际值,而不是输入循环之前的值。

如果这不是你想要做的,请澄清你的目标。