2013-04-25 93 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!" 
    ) 
)