以下代码始终将0显示为errorlevel,但是当复制命令在for循环命令之外完成时,它将返回非零错误级别。
for /f "usebackq delims=" %%x in (`copy x y`) do (
set VAR=%%x
)
ECHO Errorlevel = %ERRORLEVEL%
ECHO VAR = %VAR%
是否可以获取for循环执行的复制命令的错误级别?
答案 0 :(得分:5)
它对我有用!您只需要在DO括号内进行错误检查 使用包含复制命令的文本文件(7200行;例如: 复制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
)
答案 1 :(得分:1)
我假设您要将文件从一个目录复制到另一个目录?如果是这样,你可以做这样的事情:
@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的实际值,而不是输入循环之前的值。
如果那不是您想要做的,请澄清您的目标。