2014-11-24 172 views
0

我有一个文件夹与多个文件。所有文件名看起来像:如何使用命令提示符重命名名称列表的文件?

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

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

非常感谢!

+0

这对我来说是俄罗斯人! **':)'** – Aacini 2014-11-24 19:40:09

+0

对不起,我从来没有学过英文 – 2014-11-26 15:44:13

+0

我是说,文件名! ';)' – Aacini 2014-11-26 17:28:54

回答

2
@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!" 

    ) 
) 
+0

我比我更喜欢这个。辉煌! – rojo 2014-11-24 19:43:27

+1

请注意分类号码。目录列表将在“9 xxxx”之前对“11 xxxx”进行排序。这可能会导致名称不匹配。 – dbenham 2014-11-24 21:21:38

+0

这个很棒!它的工作。完善!非常感谢Aacini! – 2014-11-26 11:24:48

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文件并运行它。当您满意时,您可以在ren之前删除echo,您的结果将成为您的意愿。

+0

非常感谢Rojo! – 2014-11-26 11:23:45