2013-04-25 47 views
5

我有一個較大的文件夾目錄(稱爲C:\ Main)。我需要設置批處理腳本來搜索該目錄的子文件夾中的文件名中的字符串(而不是文件中的文本)。我無法找到答案。在子目錄中搜索文件名中的字符串

本質上,假設我需要在C:\ Main \ *中的所有文件名中搜索字符串「abcd」。我只查找是XML文件的匹配項。所以,我需要找到:

C:\ MAIN \ Secondary1 \ abcd_othertext.xml

C:\ MAIN \ Secondary2 \ abcd_othertext.xml

C:\ MAIN \ Secondary3 \ abcd_othertext.xml

該主目錄中所有數百個文件夾中。然後,我需要輸出所有匹配(理想情況下,在bat文件中的單個變量,但這是一個不同的蠕蟲)。在此先感謝您的幫助。

回答

5

您可以使用一個For/R循環:http://ss64.com/nt/for_r.html

@Echo OFF 

Set "Pattern=abcd" 

For /R "C:\" %%# in (*.xml) Do (
    Echo %%~nx# | FIND "%Pattern%" 1>NUL && (
     Echo Full Path: %%~# 
     REM Echo FileName : %%~nx# 
     REM Echo Directory: %%~p# 
    ) 
) 

Pause&Exit 

編輯: ......要單獨變量:

@Echo OFF 

Set "Pattern=abcd" 

For /R "C:\" %%# in (*.xml) Do (
    Echo %%~nx# | FIND "%Pattern%" 1>NUL && (
     Set /A "Index+=1" 
     Call Set "XML%%INDEX%%=%%~#" 
     Echo Full Path: %%~# 
     REM Echo FileName : %%~nx# 
     REM Echo Directory: %%~p# 
    ) 
) 

CLS 
Echo XML1 = %XML1% 
Echo XML2 = %XML2% 

Pause&Exit 
12

dir命令可以執行在子目錄通配符搜索。

DIR abcd*.xml /s /b 
+0

漂亮小巧,方便! – 2015-11-09 14:21:06

0

ElektroStudios'有固定的問題用空格,反斜槓和失蹤盤符anwser印刷目錄:

@ECHO OFF 
SETLOCAL enabledelayedexpansion 

SET "pattern=abcd" 
FOR /R "C:\" %%# in (*.xml) DO (
    ECHO %%~nx# | FIND "%pattern%" 1>NUL && (
     SET current_dir=%~d0%%~p# 
     SET current_dir=!current_dir:\=/! 

     ECHO Directory: "!current_dir!" 
    ) 
)