2017-03-16 64 views
1

我在批處理文件中使用以下代碼將所有MP3文件從一組目錄(始終更改)複製到特定位置,然後刪除mp3文件。代碼有效,但大多數情況下沒有找到MP3文件。我正在嘗試清理在批處理窗口中顯示的內容。當沒有找到MP3文件時,我總是收到「找不到文件」消息。我試圖壓制找不到的文件。產生錯誤的行是for/f「delims行(特別是dir部分)。如果我rem複製和del行我仍然得到錯誤。我試着把> nul和2> nul在目錄的末尾首先在結束報價之前,然後在每個位置之後,在雙重報價之前,我仍然得到FNF但沒有其他錯誤,每個位置出現意外>錯誤之後的每個位置。這種說法?如何在以下批處理文件代碼中抑制錯誤流

set dSource=C:\Users\pc\Documents\Recordings\VOX 
set dTarget=c:\recordings 
set fType=*.mp3 
for /f "delims=" %%f in ('dir /a-d /b /s "%dSource%\%fType%"') do (
    copy /V "%%f" "%dTarget%\" 2>nul 
    del "%%f" 2> nul 
) 

感謝,

Roveer

+0

AFAICS你不需要用''for/f'與'dir'在這裏,只需'for/r %% f in(%dsource%\%ftype%)do ...'應該給出如果存在相同的文件名列表,並且沒有錯誤消息。 –

+0

Dave,使用修改後的代碼時,我找不到相同的結果。我改變了我的示例代碼(從del到dir的最後一行並重新複製副本),以查看它會產生什麼。我的代碼產生一個找到的文件列表(只是filename.ext)。 (%dsource%\%ftype%)中的for/r %% f ...代碼運行了一段時間,但沒有輸出。 – Roveer

+0

對不起,我測試了幾個變種,但貼了錯誤的一個。嘗試'for/r%dsource%%% f在(%ftype%)做...有%% f的東西...' –

回答

2
for /f "delims=" %%f in ('dir /a-d /b /s "%dSource%\%fType%" 2^>nul') do (

插入符號^「逃逸」的>,告訴cmd在於它的dir命令的一部分(如果它是有效的),而不是for(它是無效的)

(同樣適用於| - 通常用於管道到find/findstr

+0

哦,我太親近了!我去看看發佈後,發現^聲明,並嘗試了它,我一定沒有把它放在正確的地方。非常感謝您的文章。它解決了我的問題。 – Roveer

相關問題