在名称列表后重命名文件

Rename files after a list of names

假设我在一个文件夹中有 N 个 avi 视频文件和一个文本文件,names.txt,有 N 行。 我想创建一个批处理文件,将所有视频文件重命名为:

我设法编写了一个脚本来解析 names.txt

@echo off
for /f "tokens=1 delims=" %%a in (names.txt) do echo %%a

这是解析 .avi 文件的脚本

@echo off
for %%b in (*.avi) do echo %%~nb

我怎样才能将它们组合起来,以便并行完成传递?

我想我在这个 post 中找到了您需要的内容:How to batch rename files in a directory from a list of names in a text file

我已经定制了他们的解决方案之一来尝试回答您的问题...

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

rem Load the list of new filenames
set i=0
for /F "delims=" %%a in (names.txt) do (
   set /A i+=1
   set "newname[!i!]=%%a"
)
rem Do the rename:
set i=0
for /F "delims=" %%a in ('dir /b /o:n *.avi') do (
   set /A i+=1
   for %%i in (!i!) do ren "%%a" "!newname[%%i]!"
)

我会非常注意您列出文件的顺序。我建议在 "dir" 命令中添加排序顺序。 Windows DIR Command Documentation