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

时间:2019-02-01 16:23:03

标签: batch-file batch-rename

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

names.txt 结构如下:

randomName 
NameRandom 
test 
Name
...

2 个答案:

答案 0 :(得分:0)

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

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)。

答案 1 :(得分:0)

您可以使用:

@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文件的更多行。

延伸是可改变的/定制的,以任何