如何根据不同文件中的文本重命名文件行?
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
...
您需要结合使用 FOR
和 SET /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 随便什么。
我有多个文件,例如 test1.html、test2.html ... testn.html 等等,在同一个文件夹中我有 names.txt 以及 test{n}.html 文件的所有名称。 我如何遍历 names.txt 文件并根据其中的行重命名所有 html 文件?
names.txt 结构如:
randomName
NameRandom
test
Name
...
您需要结合使用 FOR
和 SET /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 随便什么。