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

Batch file 如何查找具有特定模式的文件夹和文件,batch-file,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\ 帮助?(排除是/g:;/f:是一件非常

我想编写一个批处理文件,该文件将写入包含特定模式的所有文件和文件夹,并包含排除文件夹,但不会成功:

@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\

帮助?

(排除是
/g:
/f:
是一件非常不同的事情-请参阅
以获取/?

(排除是
/g:
/f:
是另一回事-请参见
以获取/?

好吧,给我几分钟时间。但我认为我的版本更好,因为

  • 还可以查找隐藏的文件和文件夹
  • 只运行一次
    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

好的,给我几分钟时间。但我认为我的版本更好,因为

  • 还可以查找隐藏的文件和文件夹
  • 只运行一次
    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

也许
for/f%%a in('dir/s C:\*david*')do(Echo Stuff…
但是我想排除ex-C:\$Recycle.bin、C:\Temp等的特殊路径。也许
for/f%%a in('dir/s C:\*david*')do(Echo Stuff…)
但我想排除ex-c:\$Recycle.bin、c:\temp等的特殊路径。。