1

(Windows2000および2003Serverを使用)

forfiles.exeを使用して、n日より古いバックアップ.zipファイルを削除します。これはうまく機能します(コマンドは以下のようになります)

forfiles -p"C:\Backup" -m"*.zip" -c"cmd /c if @ISDIR==FALSE del \"@PATH\@FILE\"" -d-5

.zipファイルの作成に失敗した場合、5日後にバックアップに.zipファイルが0になることのないようにしたいと思います。したがって、コマンドは次のようにする必要があります。

「5日より古いものはすべて削除しますが、それ自体が5日より古い場合でも、常に最新の5つのファイルを保持します。」

forfiles.exeまたは別のソリューションを使用できます(ただし、スクリプトファイルよりも洗練されたワンライナーの方が常に望ましいです)。

ありがとう!

4

2 に答える 2

4
FOR /F "skip=5 delims=" %%G IN ('dir /b /O-D /A-D') DO del "%%G"

最新の 5 つのファイルを除くすべてのファイルを削除します。すべてのファイルを 5 日より新しく保つためのワンライナーが見つからなかったため、より複雑なロジックを使用する必要がある場合があります。

/b

追加情報なしでファイル名のみを一覧表示します

/O-D

リストを日付の逆順で並べ替えます。

/A-D

ディレクトリ以外のファイルのみを表示するフィルタ

skip=5

最初の 5 行 (最新の 5 行) をスキップします。

于 2010-05-03T12:44:48.020 に答える
0

この小さなスクリプトは、少なくとも 6 日前に変更された 5 日より古い一致ファイル、またはより正確に言えば、少なくとも 5 つの最近変更されたファイルを常に保持する一致するファイルを削除します。

rem // Change to the target directory:
pushd "C:\Backup" && (
    rem // Loop through all matching files but skip the 5 most recently modified ones:
    for /F "skip=5 delims= eol=|" %%F in ('
        dir /B /A:-D /O:-D "*.zip"
    ') do (
        rem // Delete the currently iterated file only when modified at least 6 days ago:
        forfiles /P "%%~dpF." /M "%%~nxF" /D -6 /C "cmd /C ECHO del /F /A @PATH" 2> nul
    )
    rem // Restore the original working directory:
    popd
)
于 2019-06-12T20:00:58.827 に答える