注意:我可以访问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)
答案 0 :(得分: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"
)
答案 1 :(得分: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
如果perl可用,它应该在Windows和Linux上都有效(在Windows上用perl -E'...'
替换perl -E "..."
(单个 - &gt;双引号)。)