在名称列表后重命名文件

时间:2015-01-07 15:21:55

标签: windows batch-file batch-processing

假设我有一个文件夹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

这是脚本thar解析.avi文件

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

如何组合它们以便传递将并行完成?

1 个答案:

答案 0 :(得分:1)

我想我在这篇文章中找到了你需要的东西: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