【问题标题】:Search for string within filename in subdirectories在子目录的文件名中搜索字符串
【发布时间】:2013-04-25 20:33:17
【问题描述】:

我有一个很大的文件夹目录(称为 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 文件中的单个变量,但这是另一种蠕虫)。提前感谢您的帮助。

【问题讨论】:

    标签: batch-file findstr


    【解决方案1】:

    DIR 命令可以在子目录中执行通配符搜索。

    DIR abcd*.xml /s /b
    

    【讨论】:

      【解决方案2】:

      您可以使用 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
      

      【讨论】:

        【解决方案3】:

        ElektroStudios 解决了打印目录中空格、反斜杠和缺少驱动器号的问题:

        @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!"
            )
        )
        

        【讨论】:

          猜你喜欢
          • 2012-05-22
          • 2017-02-11
          • 1970-01-01
          • 2017-03-03
          • 2018-05-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多