這看起來應該很簡單,但我被卡住了。我正在從文本文件中遍歷照片文件路徑列表並刪除每個文件路徑。問題是,如果del命令失敗(這可能發生在文件不存在或被某些其他程序使用的情況下),我在日誌中沒有收到任何通知。循環期間bat文件捕獲錯誤:重定向似乎沒有工作
BTW-這是windows server 2008 R1 CMD。
這裏是我的代碼:
@echo off
for /F %%A in (f:\deletePhotos\deletelist.txt) do (
echo del %%A /f >> f:\deletePhotos\log.txt 2>&1
)
這裏是日誌的示例:
del f:\photos\11\48\ALX10-9322-48.jpg /f
del f:\photos\11\48\ALX10-9692-48.jpg /f
del f:\photos\11\48\LKSR20-5910-48.jpg /f
del f:\photos\11\48\LKSR20-8639-48.jpg /f
del f:\photos\11\48\SEMN4030836-48.jpg /f
del f:\photos\11\48\SEMN4036515-48.jpg /f
從日誌(以上)的文件不存在(我檢查)。顯然,我試圖讓日誌顯示一些錯誤,如:
Could Not Find f:\photos\11\48\ALX10-9322-48.jpg
但是,我只是得到了命令本身的回聲。請幫忙!
* UPDATE * 想通了: 好老的試錯:不得不搬到日誌輸出,bat文件執行之外的重定向。
像這樣:
f:\deletephotos>del.bat f:\deletePhotos\delete_11.txt >> f:\deletePhotos\log.txt 2>&1
該訣竅。
對不起,我只是不明白。您發佈的腳本*不會執行DEL命令,而是執行它們。所以,自然,你不可能*得到任何「文件未找到」錯誤。 –
是 - 它回顯刪除命令,而不是刪除命令的結果。如果你看看我上面的日誌示例,你會看到即使刪除命令失敗,它仍然只是迴應原始命令。我需要它來回應錯誤。訣竅是將日誌記錄添加到bat文件請求中,而不是在bat文件本身中。現在它工作完美。 –
也許你忘了添加一些東西,因爲從我所看到的情況來看,DEL命令不會在腳本中失敗,因爲*腳本中沒有DEL命令*。有一個ECHO打印字符串,它看起來像DEL命令,但它們從不被執行,所以不可能談論失敗的東西。我的意思是,你已經設法解決這個問題並且我非常高興你真的很高興。我只是指出,你的問題中可能沒有足夠的信息讓其他人找出問題。 –