在名称列表后重命名文件
Rename files after a list of names
假设我在一个文件夹中有 N 个 avi 视频文件和一个文本文件,names.txt,有 N 行。
我想创建一个批处理文件,将所有视频文件重命名为:
- 第一个 .avi 文件将采用 names.txt
第一行中的名称
- 第二个 .avi 文件将采用 names.txt
第二行中的名称
- 等等...(名称将包含空格)
我设法编写了一个脚本来解析 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
假设我在一个文件夹中有 N 个 avi 视频文件和一个文本文件,names.txt,有 N 行。 我想创建一个批处理文件,将所有视频文件重命名为:
- 第一个 .avi 文件将采用 names.txt 第一行中的名称
- 第二个 .avi 文件将采用 names.txt 第二行中的名称
- 等等...(名称将包含空格)
我设法编写了一个脚本来解析 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