如何使用命令提示符重命名包含名称列表的文件?

时间:2014-11-24 17:58:48

标签: batch-file command-line rename file-rename batch-rename

我有一个包含多个文件的文件夹。所有文件名都是:

"1 зелен.doc"
"2 будда.doc"
"3 конфуций.doc"

所有文件都是名称开头的第一个数字的顺序。 我有一个文件名列表,包含在文本文件中。文本文件中的每一行也是有序的。因此,第一行是第一个文件名的名称,第二行是第二个文件名,依此类推。 如何使用命令提示符重命名文件?

非常感谢!

3 个答案:

答案 0 :(得分:3)

@echo off
setlocal EnableDelayedExpansion

rem The list of filenames will be read from redirected Stdin
< filenames.txt (

   rem Process the files via FOR command
   for %%a in (*.*) do (

      rem Read the next name from the list
      set /P name=

      rem Rename the file
      ren "%%a" "!name!"

   )
)

答案 1 :(得分:1)

假设文件名列表完全对应于列出的目录,您可以通过将文本文件的内容推送到数组,将目录列入另一个数组,然后使用for /L循环遍历两个数组来实现。这样:

@echo off
setlocal enabledelayedexpansion

set "count=0"

for /f "delims=" %%I in (textfile.txt) do (
    set "to[!count!]=%%I"
    set /a count+=1
)

set "count=0"

for %%I in (*.doc) do (
    set "from[!count!]=%%I"
    set /a count+=1
)

for /L %%I in (0,1,!count!) do (
    if exist "!from[%%I]!" (
        echo ren "!from[%%I]!" "!to[%%I]!"
    )
)

将此脚本保存到.bat文件并运行它。如果您对结果满意,请在echo之前移除ren

答案 2 :(得分:0)

这个问题已经存在很长时间了,但是对于某些人(例如我,到2020年的今天,我正在尝试这样做)可能很有用。 您可以在Excel上创建一个工作表,其第一列“ Rem”第二个为文件名,第三个为每个文件的新名称。然后复制三列并粘贴到CMD(MS-DOS命令提示符)中,即可完成操作。

Excel应该是这样的:

Rem old-name.txt new-name.txt

您必须非常小心,旧名称和新名称都不能有空格,我所做的是用“-”替换(使用任何程序来更改名称)空格,然后放回它们。

我希望这对某人有用。