2015-09-06 47 views
0

我想刪除用於創建videofile.mp4的目錄/子目錄中的文件。問題是,儘管所有文件都以相同的文件名開頭,但有些文件名在創建過程中被添加了,因此%%〜na不會捕獲所有文件名。文件夾中的文件示例是videofile.mp4 videofile.ac3 videofile.m2v videofile-02.ac3。使用回聲代替起始者的刪除:使用通配符在for循環中擴展文件名

for /r %%a in ("*.mp4") do (echo "%%~dpna.m2v" "%%~dpna.ac3") 

這跳過了videofile-02.ac3。在do圓括號內添加*作爲通配符會導致*的字面解釋,無論我嘗試插入的位置*。有沒有辦法用通配符擴展%% a的文件名部分?

+0

請使用正確的代碼格式,通過選擇代碼並點擊'{}'符號下一次上 –

回答

0

我已經試過:

for /r %%a in ("*.mp4") do (echo "%%~dpna.m2v" "%%~dpna*.ac3") 

和它的工作對我來說(如果我沒有誤解你的意圖)。

以另一種方式:那豈不是不夠用:

for /r %%a in ("*.mp4") do (del /s %%~na*.*) 
1

出於調試目的,使用dir代替echo作爲dir對待通配符*性格像del

for /r %%a in ("*.mp4") do (
    dir /B /S "%%~dpna*.m2v" 2>NUL | findstr /I "%~dpna" 
    dir /B /S "%%~dpna*.ac3" 2>NUL | findstr /I "%~dpna" 
) 

在上面代碼片段:

  • dir /B /S以裸格式(無標題信息或摘要)顯示具有(完全)合格路徑的文件;
  • 2>NUL抑制File Not Found消息;
  • | findstr /I "%~dpna"禁止在子目錄中顯示文件。

只要(不超過更早)調試:

for /r %%a in ("*.mp4") do (
    del /F /Q "%%~dpna*.m2v" 2>NUL 
    del /F /Q "%%~dpna*.ac3" 2>NUL 
)