从cmd提示符中的echo捕获错误消息

时间:2011-02-28 10:28:45

标签: cmd

我正在将一些文本写入cmd批处理脚本中的文本文件,如:

echo FlagValue=Y>>flag.txt

这通常可以正常工作但偶尔如果文本文件是由不同的进程打开的,则会返回错误消息,称拒绝访问。我想要做的是,如果发生错误,请停止批处理文件:

if return_code GEQ 1 GOTO ERR

但是找不到echo命令的返回码。是否存在,或者是否有更好的策略来捕获错误消息?

2 个答案:

答案 0 :(得分:2)

echo FlagValue=Y>>flag.txt || echo access_denied Ensure you have rights

echo FlagValue=Y>>flag.txt
if /i %errorlevel% NEQ 0 do (
  echo access_denied Ensure you have rights
  call sendmail.cmd
)

样品:

C:\Users\Me\Desktop>echo Hello > MyFile.txt || echo ERROR
Access is denied.
ERROR

C:\Users\Me\Desktop>echo Hello > a.txt || echo ERROR

C:\Users\Me\Desktop>

答案 1 :(得分:0)

每次运行命令时,ERRORLEVEL环境变量都会设置为命令的返回值。因此,在运行命令后直接尝试回显%ERRORLEVEL%。 (请注意,您在其间运行的任何命令(包括echo)都将覆盖%ERRORLEVEL%。

另外,请查看这些以获取更多信息:
Can a batch file capture the exit codes of the commands it is invoking?
Batch Files - Error Handling