2014-11-24 62 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

相關問題