如何创建批处理文件以搜索文件夹中具有特定扩展名的文件?

时间:2013-05-15 21:02:08

标签: batch-file

请帮忙!我是创建批处理文件的新手。

我正在尝试创建一个批处理文件来执行以下操作:

  1. 在文件夹
  2. 中搜索具有特定文件扩展名(即.docx)的文件
  3. 将文件名和扩展名输出到文本文件(.txt)
  4. 在文本文件中,我想在文件名
  5. 之前添加索引

    例如,“文件夹1”包含以下三个文件:test1.docx,test2.docx,test3.xlsx 批处理文件将搜索这三个扩展名为.docx的文件,然后输出到文本文件(即search_result.txt)

    在search_result.txt中,它将采用以下格式:

    1 test1.docx
    2 test2.docx

    这是我到目前为止所做的上面提到的#1和#2项目,但我需要帮助来实现#3。

    @echo off
    for /r %%i in (*.docx) do echo %%~nxi >> search_result.txt
    

    提前感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

@echo off
setlocal enabledelayedexpansion
set /a counter=1
for /r %%i in (*.docx) do (

  echo !counter! %%~nxi >> search_result.txt
  set /a counter=!counter!+1
)
endlocal

答案 1 :(得分:0)

假设索引只是匹配数的递增计数,您可以使用一个变量并在循环的每次迭代中递增它。您需要启用变量的延迟扩展才能生效,这可以防止在首次计算循环时使用的变量以及每次迭代使用的相同扩展变量。然后,您可以使用!counter来引用变量!而不是%扩大%。

我认为这样的事情应该有效,但我没有运行它,所以你可能需要调整它:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set /a counter=1
for /r %%i in (*.docx) do (
    echo !counter! %%~nxi >> search_result.txt
    set /a counter=!counter!+1
)
endlocal

有关延迟扩展的更多信息,请查看此答案:How do I increment a DOS variable in a FOR /F loop?