批处理:查找包含名称部分的所有文件

时间:2014-04-07 14:35:08

标签: batch-file for-loop filenames

我需要找到所有* .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
  file1 demux.avi排除了   file2.avi
  **

2 个答案:

答案 0 :(得分:1)

试试这个:

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

我们基本上是在查找此文件夹和子文件夹中的所有avi文件并将它们通过管道进行查找。 使用finds / V开关查找所有不包含“demux”的行并在其上运行命令。

答案 1 :(得分: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 [Excluded]或echo %% a [OK],你可以做你想做的事(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])