例如,在批处理文件中,我输入以下命令:
xcopy C:\ fileA.txt D:\ Dir \ / y / d
如果没有名为fileA.txt的文件,它将绝对失败。但我想知道它是否失败,然后向用户输出一些消息。我怎么能这样做?
任何帮助都将不胜感激,谢谢!
答案 0 :(得分:11)
大多数命令/程序在成功时返回0,而其他一些值(称为 errorlevel )则表示错误。
您可以批量检查,例如
if not errorlevel 0 goto ERR
xcopy errorlevels:
0 - 所有文件都已正确复制
1 - 未找到任何文件要复制(无效来源)
2 - 在复制完成之前,Ctrl-C终止了XCOPY
4 - 发生初始化错误。
5 - 发生磁盘写入错误。
[1] http://m.computing.net/answers/dos/xcopy-errorlevels/7510.html
答案 1 :(得分:3)
我认为您感兴趣的是“错误级别”。见http://www.robvanderwoude.com/errorlevel.php。基本上,在批处理文件中,您可以通过说
来检查命令的状态代码(类似于Unix或Linux)。IF ERRORLEVEL 1 <do something>
IF ERRORLEVEL 2 <do something>
其中1和2是最后一个程序执行的状态代码的可能值。您也可以执行类似
的操作echo %ERRORLEVEL%
打印出状态代码,但请注意它并不总是像“普通”环境变量一样。使其与众不同的一点是它没有出现“set”命令。
答案 2 :(得分:2)
我发现接受的答案没有用,但确实如此:
if %ERRORLEVEL% neq 0 goto ERR
答案 3 :(得分:0)
只需使用以下结构:
command > nul 2> nul && (
echo Success
REM can be multi line
) || (
echo Error
REM can be multi line
)