0

ディレクトリ内のファイルを (作成日に基づいて) 並べ替え、x 個の最新ファイルのみを保持するバッチ ファイルを作成したいと考えています。

ファイルの名前には日付/時刻も含まれているため (つまり、file201208140322)、現在の日付/時刻を部分文字列と比較してこれを行うことが可能であれば、私もこれに対してオープンです。

誰でもコマンドで私を助けることができますか? ご協力ありがとうございました。

4

1 に答える 1

2

を使用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

このテーマには他にも考えられるバリエーションがあるため、上記が唯一の解決策ではありません。

于 2012-08-14T21:46:36.833 に答える