@ECHO OFF
SETLOCAL
SET filename=FILENAME
SET fileext=FILE-EXT
SET "deedpoll="
FOR /f "delims=" %%i IN ('dir /b /a-d /o:-d "%filename%.%fileext%*"') DO (
IF DEFINED deedpoll ECHO MOVE "%%i" "\newdir\" >nul
IF NOT DEFINED deedpoll SET "deedpoll=%%i"
)
IF DEFINED deedpoll ECHO REN "%deedpoll%" "%filename%.%fileext% 1"
関連する実際のファイル名やファイル拡張子についての手がかりがないため、それらが単純な英数字とスペースであると想定することしかできません。また、宛先ディレクトリが存在し、現在のディレクトリがファイルセットを含むディレクトリであると仮定しました。
そして、私はあなたのシーケンスが DATE に機能すると仮定しました - それはバックアップされず (に移動されnewdir
)、名前が変更された最新のファイルです ...1
とても簡単です。最初にクリアしてから、日付の逆順のディレクトリ名を使用せずに、裸のファイル名のリストをdeedpoll
実行します。dir
/b
/a-d
/o:-d
したがって、%%i に割り当てられる最初のファイル名が最新になります。deedpoll
はまだ設定されていないため、move
は実行されずdeedpoll
、最新のファイルの名前が割り当てられます。
deedpoll
が設定 (または定義) されたためmove
、指定されたマスクに一致する他のファイル名のそれぞれに対して が実行されます。
最後に、deedpoll
バージョン 1 に名前が変更されます。
REN
ame とMOVE
コマンドは単にECHO
画面に表示されることに注意してください。これにより、バッチが実行したいことを確実に実行できるようになります。すべてが正しければ、これらのECHO
キーワードを両方とも削除して、名前変更と移動を有効にします。