例如,在一个批处理文件,我输入下面的命令:如何知道命令是否通过批处理文件成功执行?
XCOPY C:\ fileA.txt d:\风向\/Y/d
,如果没有一个文件将绝对失败称为fileA.txt。但我想知道它是否失败,然后输出一些消息给用户。我怎样才能做到这一点?
任何帮助将不胜感激,谢谢!
例如,在一个批处理文件,我输入下面的命令:如何知道命令是否通过批处理文件成功执行?
XCOPY C:\ fileA.txt d:\风向\/Y/d
,如果没有一个文件将绝对失败称为fileA.txt。但我想知道它是否失败,然后输出一些消息给用户。我怎样才能做到这一点?
任何帮助将不胜感激,谢谢!
大多数命令/程序在成功时返回0,并返回一些其他值,称为错误级别,表示发生错误。
您可以通过
if not errorlevel 0 goto ERR
XCOPY errorlevels在你批量例如检查此:
0 - 所有文件都没有错误复制
1 - 没有文件被发现复制(无效源)
2 - XCOPY通过Ctrl-C键封端的复制完成之前
4 - 发生初始化错误。
5 - 发生磁盘写入错误。
[1] http://m.computing.net/answers/dos/xcopy-errorlevels/7510.html
我认为你感兴趣的是“错误级别”。见http://www.robvanderwoude.com/errorlevel.php。基本上,在您的批处理文件,你可以这样
IF ERRORLEVEL 1 <do something>
IF ERRORLEVEL 2 <do something>
其中1和2是由执行的最后一个程序返回的状态代码的可能值检查命令(类似Unix或Linux)的状态代码。您也可以执行如下操作:
echo %ERRORLEVEL%
可打印出状态码,但请注意,它并不总是像“正常”环境变量那样工作。有一点让它变得不同的是,它不会显示“set”命令。
非常感谢!它也帮助我。但是我担心我只能接受一个答案。 – SeaStar
我找到了公认的答案没有工作,但这样做的:
if %ERRORLEVEL% neq 0 goto ERR
的[万无一失的方法
可能重复检查非零(错误)返回代码在Windows批处理文件](http://stackoverflow.com/questions/10935693/foolproof-way-to-check-for-nonzero-error-return-code-in-windows-batch-file) – dbenham