2009-01-05 31 views
7

我正在寻找可以做下面的一个.bat或.wsh脚本的一些例子:一个.bat或.wsh脚本,可以搜索文件

  • 递归的目录中读取文件名用户提供的扩展名(.dll,.exe等)
  • 在用户提供的目录中搜索上述文件名
  • 生成结果的txt或xls报告,如:x.txt在“C :\ temp“,”C:\ blah“

TIA。

编辑:

哎呀,我要澄清:有两个目录和两个搜索在这里。

搜索1:

  • 搜索用户提供目录 “目录1” 的所有* .DLL的。

搜索2:

  • 搜索在搜索1.此搜索也需要递归生成的文件名不同的用户提供的目录“风向2”。

所以,如果搜索发现1在方向1 foo.dll,foo2.dll和foo3.dll,搜索2应该在迪尔2 foo.dll,foo2.dll和foo3.dll,并提供报告(简单列表)每个找到的文件。

回答

9

放在一个.bat文件下面,说FindAll.bat

@echo OFF 

for /f %%F in ('dir %2\%1 /s /b') do (
    <nul (set /p msg=%%~nxF) 
    for /f %%G in ('dir %3\%%~nxF /s /b') do (
     if exist %%G (
      @echo found at %%G 
     ) 
    ) 
) 

%1为用户提供文件掩码。

%2是用户提供的首先搜索的目录。

%3是用户提供的第二个搜索目录。在命令行

呼叫生成报告:

FindAll *.dll d:\dir1 d:\dir2 > dll_report.txt 2>&1 

<nul (set /p)诀窍输出文本到控制台没有(从这个线程礼貌PaxHow to code a spinner for waiting processes in a Batch file?)新行

2>&1添加当调用批处理文件时需要捕获所有输出到该文件(礼貌aphoria从此线程:Underused features of Windows batch files

18

为什么不使用dir?

搜寻当前目录及其所有子目录的DLL

dir /S *.dll 

搜寻所有的C的DLL

dir /S C:\*.dll 

保存报告

dir /S C:\*.dll > report.txt 
+0

听起来像家庭作业? – devio 2009-01-05 22:54:06

+0

不,不作业,一个副项目 – chrome 2009-01-05 23:54:24

-3

我会研究Robocopy,看看这可以帮助(/ L标志是线索)。