2

最新の N 個のファイルをディレクトリに保持し、古いファイルを削除する方法を探しています。

フォルダー (Windows サーバー) に FTP で毎日バックアップを取得しましたが、最後の 3 つのバックアップだけを保持したいと考えています。これらのバックアップは 2 つのファイルで提供されます (最初のファイルは .tar.gz で、2 つ目は MySQL ダンプの .sql です)。

ポイントは、これらのバックアップが作成されない日があるため、3 日以上前のファイルを削除したくないということです。ただし、できるだけ多くのファイルを削除して、最新の 6 ファイル (3 日間のバックアップ、一度に 2 つのファイル) を保持します。

.bat でこれを行う方法は?

前もって感謝します

4

2 に答える 2

6

Endoroの答えよりも少し簡単です。これは、.sql ファイルと .tar.gz ファイルが常にペアになっていることを前提としています。

for /f "skip=6 eol=: delims=" %%F in ('dir /b /a-d /o-d *.tar.gz *.sql') do del "%%F"

説明:

DIR コマンドは、最終変更のタイム スタンプで降順で並べ替えられたファイルを一覧表示します。すべてのオプションの意味に関するドキュメントを取得するには、コマンドプロンプトからhelp dirorを入力します。dir /?FOR コマンドは結果を処理します。SKIP オプションは最初の 6 ファイルをスキップします。これらのファイルはたまたま一番上にソートされるため、保持したいファイルです。残りのファイル名は DEL コマンドに渡されます。FORのドキュメントについてはhelp fororと入力for /?してください。多くのオプションがあり、ちょっと野獣です。

于 2013-07-31T23:12:00.793 に答える