1

'n' 個を超えるファイル (おそらく 5 バージョン) を最も古いものから順に削除し、最新の 5 ファイルを数百のディレクトリに保持するスクリプトを作成しようとしています。これらのディレクトリはすべて、1 つのルート フォルダの下にネストされています。

これらは、毎晩のプロセス中に作成されるバックアップ ファイルのコピーであり、理由については触れませんが、現時点ではバックアップ システムを制御して、5 つのコピーのみを保持するように指示することはできません。 .. 日付だけに基づいたものを使用することはできません。最後の 10 バージョンが過去 10 日間である場合もあれば、バックアップが毎週、毎月、またはアドホックである場合もあるため、日付は 10 週間/月にさかのぼります。設定された日か何か...私は自分であらゆる種類のスクリプトを試しましたが、これを正しく行うことができません...

単一のディレクトリでうまく機能するものを見つけましたが、これをサブディレクトリに移動して適切に機能させることができませんでした。

したがって、これを実行すると:

@echo off &setlocal set folder=d:\test\test1

pushd "%folder%"

for /f "skip=5 tokens=*" %%i in ('dir /a:-ds /b /o:-d') do del "%%i"

ポップド


「d:\test\test1」ディレクトリに移動し、最新の 5 つのファイルを残して残りを削除します。そのディレクトリにいくつのファイルがあっても機能します。

だから今、私が本当に望んでいるのは、これを 'd:\test' から下のディレクトリに移動させ、それらすべてのディレクトリで 5 つのファイル バージョンを除くすべてを削除することです。dirコマンドで「/ s」を使用してバリエーションを試しましたが、完全に実行できるものにはヒットしていません...

これで数日間遊んでいますが、成功していません...誰でもアイデアを持っています。私は何でも受け入れます...ありがとう!

4

1 に答える 1

3
FOR /R "d:\test\test1\" %%G in (.) DO (
Pushd %%G

Echo now in %%G

for /f "skip=5 tokens=*" %%i in ('dir /a:-d-s /b /o:-d') do echo "%%i"

Popd )
于 2012-10-19T17:38:58.123 に答える