ディレクトリ内のファイルを (作成日に基づいて) 並べ替え、x 個の最新ファイルのみを保持するバッチ ファイルを作成したいと考えています。
ファイルの名前には日付/時刻も含まれているため (つまり、file201208140322)、現在の日付/時刻を部分文字列と比較してこれを行うことが可能であれば、私もこれに対してオープンです。
誰でもコマンドで私を助けることができますか? ご協力ありがとうございました。
ディレクトリ内のファイルを (作成日に基づいて) 並べ替え、x 個の最新ファイルのみを保持するバッチ ファイルを作成したいと考えています。
ファイルの名前には日付/時刻も含まれているため (つまり、file201208140322)、現在の日付/時刻を部分文字列と比較してこれを行うことが可能であれば、私もこれに対してオープンです。
誰でもコマンドで私を助けることができますか? ご協力ありがとうございました。
を使用DIR /O-D /B /A-D
して、変更時間の降順で並べ替えられたファイルのリストを取得し、このコマンドの出力を にフィードして、FOR /F
これらのファイルを処理することができます。を使用SET /A
すると、これまでに確認したファイルの数を追跡するカウンターをインクリメントできます。このカウンターが特定のしきい値に達したら、後続のすべてのエントリの削除を開始できます。
これを行うバッチファイルは次のとおりです。
@ECHO OFF
SETLOCAL
SET PROCESSED_COUNT=0
SET SKIP_FIRST=5
SET START_PROCESSING=0
FOR /F %%f IN ('dir /o-d /b /a-d') DO CALL :process %%f
ENDLOCAL
GOTO :eof
:process
IF %PROCESSED_COUNT%==%SKIP_FIRST% SET START_PROCESSING=1
SET /A PROCESSED_COUNT=%PROCESSED_COUNT% + 1
IF %START_PROCESSING%==0 GOTO :eof
ECHO Delete file #%PROCESSED_COUNT%: %1
GOTO :eof
このテーマには他にも考えられるバリエーションがあるため、上記が唯一の解決策ではありません。