我是一個CMD批處理腳本內書面方式進行一些文本到文本文件中像這樣的:捕捉錯誤信息沒有回聲的命令提示符
echo FlagValue=Y>>flag.txt
這通常工作正常,但偶爾如果文本文件是由開放一個不同的過程,一個錯誤報告返回說拒絕訪問。我想要做的是,如果有類似發生錯誤停止批處理文件:
if return_code GEQ 1 GOTO ERR
卻找不到從echo命令返回代碼。是否存在,或者有更好的策略來捕獲錯誤信息?
我是一個CMD批處理腳本內書面方式進行一些文本到文本文件中像這樣的:捕捉錯誤信息沒有回聲的命令提示符
echo FlagValue=Y>>flag.txt
這通常工作正常,但偶爾如果文本文件是由開放一個不同的過程,一個錯誤報告返回說拒絕訪問。我想要做的是,如果有類似發生錯誤停止批處理文件:
if return_code GEQ 1 GOTO ERR
卻找不到從echo命令返回代碼。是否存在,或者有更好的策略來捕獲錯誤信息?
每次運行命令時,ERRORLEVEL環境變量都會設置爲您的命令的返回值。因此,在運行命令後,請直接嘗試echo%ERRORLEVEL%。 (要小心,因爲你運行的插圖中(包括回聲任何命令)將覆蓋%ERRORLEVEL%
此外,檢查這些出更多的信息:
Can a batch file capture the exit codes of the commands it is invoking?
Batch Files - Error Handling
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>
我試圖建立一個小的測試腳本 回聲關閉 回聲測試線>> FILE1.TXT 呼應錯誤級別=%ERRORLEVEL% 但導致我回來是 ,因爲它正在使用的進程無法訪問該文件另一個過程。 errorlevel = 0 – Tadhg 2011-02-28 11:04:13
當你可以**訪問文件時,你會得到什麼錯誤級別?即嘗試寫入另一個文件file2.txt – Joe 2011-02-28 11:07:31
無論我能否寫入文件,我仍然得到errorlevel = 0 – Tadhg 2011-02-28 11:55:13