1 つのフォルダーにある 40 個の png ファイルの名前を変更したいのですが、これらのファイルの名前は非常に長いです。これらのファイルは、「blah...blah...blah160.png」、「blah...blah...blah200.png」のように連番で名前が付けられています。つまり、40 文字の英数字の後に 3 桁のシリアル番号 (160) が続きます。ファイル名には最後の 3 桁だけを残したいので、「blah...blah...blah160.png」は「160.png」になります。Win 7 で簡単な 1 行の DOS (cmd.exe) コマンドはありますか?
答え1
次の cmd ファイルで目的を達成できます。
@echo off & setlocal
for %%F in (*.png) do call :doIt %%F
goto xit
:doIt
set name=%~n1
set num=%name:~-3%
set ext=%~x1
set lentest=%name:~40,3%
if not [%lentest%]==[] (
copy "%1" %num%%ext%
:: del "%1"
)
goto :EOF
:xit
endlocal
長い名前のバージョンを実際に削除するには、「del」行のコメントを解除します。
これをより少ない行数に詰め込むことは可能ですが、そうすると理解しにくくなります。