2014-04-07 76 views
1

我需要找到所有* .avi文件(甚至在子文件夾中)。但我想排除名稱的特定部分(* demux.avi)的文件。事情是這樣的:批處理:找到所有排除部分名稱的文件

FOR /R %%g IN (*.avi) DO ( 
    if "%%g"=="*demux.avi" (  - THIS PART IS WRONG 
     echo "%%g" excluded 
) else (
     echo "%%g" 
    ) 
) 

我期待的結果:

file1.avi
文件1 demux.avi排除
file2.avi
**

回答

1

試試這個:

FOR /F %%g IN ('dir /b /s "*.avi"^|find /i /v "demux"') DO (whatever) 

我們基本上是說在這個文件夾和子文件夾中尋找所有的avi文件,然後通過管道找到它們。 使用找到/ V開關,查找所有不包含「demux」的行並在其上運行您的命令。

+0

非常感謝。效果很好。很有幫助。 – user1371951

0

像這樣:

@echo off&cls 
for /f "delims=" %%a in ('dir /b/a-d *.avi') do (echo %%a | find "demux" && echo %%a [Excluded] || echo %%a [OK]) 

代替回聲%%一個[排除]或echo %% A [確定],你可以做你想做的(DEL, REN,MOVE,...

編輯:

要使用的/S選項,當你只是有文件的名稱DIR

@echo off&cls 
for /f "delims=" %%a in ('dir /s/b/a-d *.avi') do (echo %%~na | find "demux" && echo %%~na [Excluded] || echo %%~na [OK]) 
+0

非常感謝! – user1371951

+0

我發現了另一個問題。我必須使用帶參數/ s的dir來搜索所有子文件夾。但它返回完整的補丁,例如C:\工作\ video.avi。我只想得到名稱的一部分 - 在斜槓和點「視頻」之間。如何做到這一點,長度是可變的。 – user1371951

+0

檢查編輯! – SachaDee

相關問題