如何根据不同文件中的文本重命名文件行?

How to rename lines of files according to text in different file?

我有多个文件,例如 test1.html、test2.html ... testn.html 等等,在同一个文件夹中我有 names.txt 以及 test{n}.html 文件的所有名称。 我如何遍历 names.txt 文件并根据其中的行重命名所有 html 文件?

names.txt 结构如:

randomName 
NameRandom 
test 
Name
...

您需要结合使用 FORSET /a 来完成此操作。您实际上会在读取 names.txt 文件的 FOR 循环中使用 SET /a 增加计数器,并根据计数器值和行条目重命名文件。

setlocal enableDelayedExpansion
SET counter=0
FOR /F "usebackq tokens=* delims=" %%f IN (names.txt) DO (
  SET /a counter=!counter!+1
  ECHO.N:!counter!
  REN "test!counter!.html" "%%f.html"
)

要在循环内执行变量操作,您还需要启用延迟扩展 (setlocal enableDelayedExpansion)。

您可以使用:

@echo off
setlocal EnableDelayedExpansion

set "testn=0"
set "extension=html"

for /F "delims=" %%A IN (names.txt) do (
    set /a "testn+=1"
    if exist test!testn!.%extension% (
        echo Processing test!testn!.%extension%
        rename "test!testn!.%extension%" "%%A.%extension%"
    ) else (
        call:finish
    )
)
goto:finish

:finish
echo Finished renaming^^!
pause
exit /b

除其他答案外,这 稍微 更快 如果 文件包含的行数多于 test*.html 文件.

扩展名 changeable/custom 随便什么。