CMD または Powershell を使用してファイル/ディレクトリを一括削除できますが、より高速なオプションもあります
スクリプト C の方が速いでしょう
Cd /d “%USERPROFILE%\AppData\Local\Temp\” rd /s /q.
これにより、コマンド プロンプト バージョンの for ループにある余分な列挙が削除されます。現在いるフォルダーを削除できないため、最後にエラーがスローされます。ファイル パスを文字列として構築するだけのネイティブ コマンドレットがないため、ファイル オブジェクトを構築する必要があるため、コマンド プロンプトは PowerShell コマンドレットよりも常に高速です。 。ファイルサイズ、作成日などの追加情報を取得し、そのオブジェクトを作成するには時間がかかります。ファイル数が 5 桁以上になると、明らかに違いがわかります。私は毎日、削除/アーカイブが必要なフォルダーとファイルの上位 6 桁から下位 7 桁のファイルを管理していましたが、通常、これが最速の削除ソリューションでした。
レディットユーザー
すべてを のスクリプトブロックに入れないと
Measure-Command
わかりません。あなたが指定したディレクトリは
$env:TEMP
または%TEMP%
99%の確率で。%LOCALAPPDATA%
またはにあります$env:LOCALAPPDATA
。get-childitem を実行する必要がないこともわかっています。あなたはただそれをすることができます
Remove-Item "$($env:TEMP)\*"-Recurse -Force
またはdel /f /s /q %TEMP%
また、/s はすべてのサブディレクトリを処理するため、ボット コマンドとループと同じことを行うのに必要なコマンドは 1 つだけです。
レディットユーザー
数年前、スクリプトからいくつかの巨大なフォルダー (12Gb、75k ファイル、7k フォルダー) を削除することを検討し、このドットネット呼び出しに落ち着きました。
[System.IO.Directory]::Delete($Folder.Fullname, $true)
ローカルで列挙しないため、リモート マシン上では高速です。それがあなたのユースケースにどのように適合するかわかりません。ベースフォルダーは削除されます。再作成できる場合もあれば、使用時に自動作成される場合もあります。また、一時フォルダーには開いたファイルが存在する可能性がありますが、そこで何が起こるかはわかりません。
レディットユーザー
/mir を使用する robocopy には十分注意してください。私の犯罪パートナーが、ある日、数週間にわたって実行されていたスケジュールに従って、大規模な運用ファイル サーバーを新しいサーバーにミラーリングしているのを目撃しました。彼は新しい家に移り、ソースを削除しました。 Robocopy はすべてのプロダクションを即座に削除しました。彼は何が起こったのかを理解して、私の目の前で真っ青になりました。ありがたいことに、シャドウ コピーが実行されていました。私がこれまで目撃した中で最も早い大幅な回復。 5 分以内にすべての生産が再開されました。私たちはこのことについて二度と話しませんでした。ただし、私は robocopy と /mir スイッチには細心の注意を払っています。
レディットユーザー
ファイル/フォルダーを一括削除する最も速い方法は robocopy です。これは cmd.exe を使用して実行できます (起動が 1 ~ 2 秒早くなる場合がありますが、実行時間は同じです)。
mkdir “%USERPROFILE%\empty” robocopy “%USERPROFILE%\empty” “%USERPROFILE%\AppData\Local\Temp” /mir rmdir “%USERPROFILE%\empty”
または、ここでは PowerShell が必要ないようですが、powershell.exe または pwsh.exe を使用して実行します。
mkdir “$ENV:USERPROFILE\empty” & robocopy “$ENV:USERPROFILE\empty” “$ENV:USERPROFILE\AppData\Local\Temp” /mir rmdir “$ENV:USERPROFILE\empty”
ここで、ファイルが使用されているために問題が発生する可能性があります
レディットユーザー
Get-ChildItem -Path “$env:USERPROFILE\AppData\Local\Temp” -Force | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
レディットユーザー
del /f /s /q “%USERPROFILE%\AppData\Local\Temp\*.*” >nul 2>&1
for /d %%x in (“%USERPROFILE%\AppData\Local\Temp*.*”) do @rd /s /q “%%x”
CMD スクリプトと PowerShell スクリプト: ファイル/ディレクトリの一括削除ではどちらの方が高速ですか? PowerShellのu/castiel3125による
コメントを残す