2011-02-28 74 views
0

我是一个CMD批处理脚本内书面方式进行一些文本到文本文件中像这样的:捕捉错误信息没有回声的命令提示符

echo FlagValue=Y>>flag.txt 

这通常工作正常,但偶尔如果文本文件是由开放一个不同的过程,一个错误报告返回说拒绝访问。我想要做的是,如果有类似发生错误停止批处理文件:

if return_code GEQ 1 GOTO ERR 

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

回答

0

每次运行命令时,ERRORLEVEL环境变量都会设置为您的命令的返回值。因此,在运行命令后,请直接尝试echo%ERRORLEVEL%。 (要小心,因为你运行的插图中(包括回声任何命令)将覆盖%ERRORLEVEL%

此外,检查这些出更多的信息:
Can a batch file capture the exit codes of the commands it is invoking?
Batch Files - Error Handling

+0

我试图建立一个小的测试脚本 回声关闭 回声测试线>> FILE1.TXT 呼应错误级别=%ERRORLEVEL% 但导致我回来是 ,因为它正在使用的进程无法访问该文件另一个过程。 errorlevel = 0 – Tadhg 2011-02-28 11:04:13

+0

当你可以**访问文件时,你会得到什么错误级别?即尝试写入另一个文件file2.txt – Joe 2011-02-28 11:07:31

+0

无论我能否写入文件,我仍然得到errorlevel = 0 – Tadhg 2011-02-28 11:55:13

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>