如何创建一个批处理文件,在一个文件夹中搜索特定扩展名的文件?

10

求助!我刚开始学习批处理文件。

我正在尝试创建一个批处理文件来完成以下事情:

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

例如,“文件夹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

提前感谢您的帮助。


“在文件名前添加索引”是什么意思? - Robert Harvey
我认为他的意思是“索引号码”/序号:1、2、3... @robert-harvey - tgkprog
请参见https://dev59.com/PnE85IYBdhLWcg3wKwOD。 - j.holetzeck
2个回答

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

0

假设索引只是匹配数量的递增计数,您可以使用变量并在每次循环迭代时将其递增。为了使此功能正常工作,您需要启用延迟扩展变量,这可以防止在首次评估循环时扩展变量并在每次迭代中使用相同的扩展变量。然后,您可以使用!counter!而不是%expanded%来引用变量。

我认为像这样的东西应该可以工作,但我还没有运行它,所以您可能需要进行微调:

@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

查看此答案以获取有关延迟扩展的更多信息:如何在FOR / F循环中递增DOS变量?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接