例如,在批处理文件中,我输入了以下命令:
xcopy C:\fileA.txt D:\Dir\ /y /d
如果没有名为fileA.txt的文件,它将绝对失败。但是,我想知道如果它失败了,如何向用户输出一些信息。我该怎么做?
感谢任何帮助!
如果没有名为fileA.txt的文件,它将绝对失败。但是,我想知道如果它失败了,如何向用户输出一些信息。我该怎么做?
感谢任何帮助!
大多数命令/程序在成功时会返回0,并返回其他值,称为错误级别,以表示错误。
例如,在您的批处理中,您可以检查这个值:
Most commands/programs return a 0 on success and some other value, called errorlevel, to signal an error.
You can check for this in your batch file, for example by:
if not errorlevel 0 goto ERR
xcopy错误等级:
0- 所有文件都成功复制,没有错误
1- 没有找到要复制的文件(源文件无效)
2- 在复制完成之前,XCOPY被Ctrl-C终止
4- 初始化错误发生了
5- 磁盘写入错误发生了
[1] http://m.computing.net/answers/dos/xcopy-errorlevels/7510.html
if errorlevel
具有这种奇怪的属性:如果返回代码等于或高于指定的错误级别,则返回 TRUE。 - shinjin我认为你感兴趣的是“错误级别”。请查看http://www.robvanderwoude.com/errorlevel.php。基本上,你可以通过以下方式在批处理文件中检查命令的状态码(类似于Unix或Linux):
IF ERRORLEVEL 1 <do something>
IF ERRORLEVEL 2 <do something>
其中1和2是上一个程序返回的状态码可能的值。你也可以这样做:
echo %ERRORLEVEL%
我发现被接受的答案不起作用,但这个可以:
if %ERRORLEVEL% neq 0 goto ERR
只需使用以下结构:
command > nul 2> nul && (
echo Success
REM can be multi line
) || (
echo Error
REM can be multi line
)