特定の条件を満たす約 X 百万個のファイルを削除するという課題があります。具体的には、90 日以上経過していて、特定のファイル形式を除外する必要があります。これまで、マルチスレッドの PowerShell スクリプトを使用してきましたが、これは便利ですが、取り込みプロセスで新しいファイルが高速に作成されるため、必要な速度には達していません。
多数のファイルの削除を高速化するにはどうすればよいでしょうか?
答え1
エージェント・ランサック非常に高速で、変更日に基づいてファイルを削除できます。
また、当然ですが、サーバー上で実行されている他のすべてのプロセスをシャットダウンすると、実行速度が速くなります。
答え2
Powershell はあまり高速ではないという評判がありますが、Windows の組み込みforfiles
コマンドを使用したバッチ ファイルでうまくいくかもしれません。
90 日より古いファイルをすべて選択して削除するには、次のようなものを使用できます。
forfiles -p "C:\your\dir" /S /D -90 /C "cmd /c del @path"
それでもまだ遅い場合は、forfiles
まず削除するファイルのリストを作成し、次にリスト内のすべてのファイルに対してバッチ削除コマンドを使用することができます (これにより、del
呼び出し/反復回数が大幅に減少します)。