元のファイル名の一部のみを使用して複数のファイルの名前を変更する

元のファイル名の一部のみを使用して複数のファイルの名前を変更する

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」行のコメントを解除します。

これをより少ない行数に詰め込むことは可能ですが、そうすると理解しにくくなります。

関連情報