@echo off
setlocal enabledelayedexpansion
set count=0
for /d %%x in (%date:~-4%.000.???) do (
for /f "tokens=3 delims=." %%y in ("%%x") do (
set count=%%y
for %%z in (%%x\*.jpg) do (
ren %%~dpnxz !count!.jpg
set /a count=count+1
)
)
)
endlocal
上記のコードは、ディレクトリがの形式になることを前提としています%CurrentYear%.000.???
。複数年が必要な場合は、別のコードが必要になります。
編集:000.jpg
このコードはまたはを出力しません001.jpg
、それは0.jpg
またはを出力します1.jpg
。下部のコードはそれを処理します。
また、の元のファイル名を完全に削除し、###.jpg
任意の値で機能します。元のファイル名を次のように保持する場合は、行を次のように#-FileName.jpg
変更します。ren
ren %%~dpnxz !count!-%%~nz.jpg
コードはファイルを並べ替えませんが、作成された順序でファイルを処理します。アルファベット順にしたい場合は、for %%z in (%%x\*.jpg) do (
行を次のように変更します。
for /f "tokens=*" %%z in ('dir /o:n %%x\*.jpg') do (
編集:このコードは、ユーザー入力によって制限された、一貫した長さの数値を出力します。
このコードを使用するには、最大数にする文字数を渡す必要があります。それで...
IMG 2
...ファイルの名前をからに変更でき00.jpg
ます99.jpg
...
IMG 4
...ファイルの名前をから0000.jpg
に変更できます9999.jpg
。
IMG.BAT
@echo off
setlocal enabledelayedexpansion
:: Set how many characters the number can be. IE 00 = 2, 0000 = 4
set places=%1
set count=0
set zeros=
for /l %%x in (1,1,%places%) do set zeros=!zeros!0
for /d %%x in (%date:~-4%.000.???) do (
for /f "tokens=3 delims=." %%y in ("%%x") do (
set count=%%y
for %%z in (%%x\*.jpg) do (
:: Make give !count! leading 0's if nessicary
set count=%zeros%!count!
:: Trim !count! down to a 4 digit number
set count=!count:~-%places%!
ren %%~dpnxz !count!.jpg
:: Trim ALL 0's on the left to avoid calculation problems.
set /a n=places-1
for /l %%a in (0,1,!places!) do if "!count:~0,1!"=="0" set count=!count:~1!
set /a count=count+1
)
)
)
endlocal
Windowsエクスプローラーは通常、ファイルをアルファベット順に並べ替えるため、この方法を好みます。これは、次のファイル順序になります。1.jpg
2.jpg
3.jpg
10.jpg
20.jpg
1.jpg
10.jpg
2.jpg
20.jpg
3.jpg
ただし、これらの数字が3文字幅で先行ゼロで固定されている場合、アルファベット順は次のようになります。
001.jpg
002.jpg
003.jpg
010.jpg
020.jpg