2011-02-28 68 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>