10

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

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

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

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

在 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

预先感谢您的帮助。

4

2 回答 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
于 2013-05-15T21:22:47.020 回答
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 变量?

于 2013-05-15T21:30:37.913 回答