2009-01-05 34 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標誌是線索)。