我正在将一些文本写入cmd批处理脚本中的文本文件,如:
echo FlagValue=Y>>flag.txt
这通常可以正常工作但偶尔如果文本文件是由不同的进程打开的,则会返回错误消息,称拒绝访问。我想要做的是,如果发生错误,请停止批处理文件:
if return_code GEQ 1 GOTO ERR
但是找不到echo命令的返回码。是否存在,或者是否有更好的策略来捕获错误消息?
答案 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