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)
4

2 に答える 2

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"
)
于 2013-04-26T02:10:01.640 に答える
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 "..."ください)。

于 2013-04-26T12:11:20.560 に答える