如何查找具有特定模式的文件夹和文件

时间:2015-07-26 08:58:54

标签: batch-file

我想编写一个批处理文件,用于记录包含特定模式的所有文件和文件夹,以及排除文件夹,但没有成功:

@ECHO OFF

for /r "%c:\" %%x in (david) do (    
echo "%%x"
findstr /f:exclude.txt /c:"%%x"  > nul || echo.%%x >> c:\david.log
)
goto :eof

排除文件:

C:\ $ RECYCLE.BIN \ C:\ TEMP \

帮助?

2 个答案:

答案 0 :(得分:2)

(排除/g:; /f:是一个非常不同的东西 - 请参阅for /?

for /r %%i in (*david*) do echo %%i|findstr /v /i /g:exclude.txt >>c:\david.log

答案 1 :(得分:2)

好的,Stephan打败了我几分钟。但我认为我的版本更好,因为

  • 还会找到隐藏的文件和文件夹,
  • 仅运行findstr一次,而不是每个找到的文件或文件夹名称更快。

文件C:\Temp\Exclude.txt包含要忽略的文件夹列表。重要的是要在文件中转义$,否则它将被解释为不是文字。

C:\Temp\Exclude.txt的示例:

C:\\$Recycle.bin
C:\Temp

批处理文件包含或多或少的一行:

@echo off
dir /A /B /S C:\*david* | %SystemRoot%\System32\findstr.exe /B /I /V /G:"C:\Temp\Exclude.txt" >C:\Temp\david.log

因为可以通过在命令提示符窗口中运行dir /?来读取它,所以参数/A会导致包含任何属性的文件和文件夹,其中包括隐藏的系统文件和文件夹。选项/B表示裸格式,/S用于搜索和列出所有子目录中匹配的文件和文件夹。

在命令提示符窗口中执行的

findstr /?输出此命令的帮助。 /B表示开头。 /I表示忽略大小写进行搜索。 /V是最重要的选项,因为它意味着输出所有不包含搜索字符串的行。带有搜索字符串的文件使用/G指定。

结果会重定向到文件C:\Temp\david.log