2013-04-25 76 views
0

注意:我可以訪問Linux和Windows平臺,因此這些平臺的答案都很好。如何重命名文件夾中的所有文件並創建重命名映射

我有一個文件夾,其中包含少於10K .png文件。我想:

1. rename all files as follows: 

    <some_filename>.png to 0001.png 
    <some_other_name>.png to 0002.png 
    <another_name>.png to 0003.png 
    and so on... 

2. keep this name mapping in a file (see 1 for mapping) 

回答

1

在Windows中:這應該按字母順序排序的列表,並將它們全部用數字命名,填充到4個字符。

它寫入重命名的bat文件。您可以在重命名並運行它之前檢查它,並將其作爲文件名的映射。

帶!的文件名!角色可能會成爲問題。

@echo off 
setlocal enabledelayedexpansion 
set c=0 
for %%a in (*.png) do (
set /a c=c+1 
set num=0000!c! 
set num=!num:~-4! 
>>renfile.bat.txt echo ren "%%a" "!num!%%~xa" 
) 
0

要重命名的所有.png文件在當前目錄下,並重新命名地圖保存到renaming-map.txt文件:

$ perl -E'while (<*.png>) { $new = sprintf q(%04d.png), ++$i; say qq($_ $new); 
    rename($_, $new) }' > renaming-map.txt 

例如,給出以下目錄內容:

$ ls 
a.png b.png c.png d.png e.png f.png g.png h.png i.png j.png 

它生產:

$ perl -E'while (<*.png>) { $new = sprintf q(%04d.png), ++$i; say qq($_ $new); 
    rename($_, $new) }' 
a.png 0001.png 
b.png 0002.png 
c.png 0003.png 
d.png 0004.png 
e.png 0005.png 
f.png 0006.png 
g.png 0007.png 
h.png 0008.png 
i.png 0009.png 
j.png 0010.png 

結果:

$ ls 
0001.png 0003.png 0005.png 0007.png 0009.png 
0002.png 0004.png 0006.png 0008.png 0010.png 

它應該工作都在Windows和Linux,如果Perl是可用的(在Windows上perl -E "..."替換perl -E'...'(單 - >雙引號))。