您可以使用 CMD 或 Powershell 批次刪除檔案/目錄,但還有更快的選項

您可以使用 CMD 或 Powershell 批次刪除檔案/目錄,但還有更快的選項

C 腳本會更快

cd /d “%USERPROFILE%\AppData\Local\Temp\” rd /s /q。

這消除了命令提示字元版本中 for 迴圈的額外枚舉。它會在最後拋出一個錯誤,因為您無法刪除所在的資料夾。命令提示字元總是比 powershell cmdlet 更快,因為您必須建立一個檔案對象,因為沒有本機 cmdlet 僅將檔案路徑建構成字串。取得新增的資訊(例如檔案大小、建立日期等)並建立所述物件需要時間。如果文件數量為五位數或更多,您肯定會看到差異。我用來維護每天需要刪除/歸檔的資料夾和文件,這些資料夾和文件的高 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 負責處理所有子目錄,因此您只需要一個命令即可執行與 bot 命令和循環相同的操作。

紅迪網用戶

幾年前,我考慮從腳本中刪除一些巨大的資料夾(12Gb、75k 檔案、7k 資料夾),並決定使用這個 dotnet 呼叫。

[System.IO.Directory]::Delete($Folder.Fullname, $true)

它在遠端電腦上速度很快,因為它不在本地進行枚舉。我不確定它如何適合您的用例。它確實刪除了基本資料夾。您也許能夠重新建立它,或者它可能會在使用時自動建立。另外,臨時資料夾可以有打開的文件,不確定那裡會發生什麼。

紅迪網用戶

使用 /mir 時要非常小心 robocopy。目睹我的犯罪夥伴有一天將一台大型生產文件伺服器鏡像到它的新家,其計劃已經運行了幾週。他切換到新家並刪除了來源。 Robocopy 立即刪除了所有生產內容。當他意識到發生了什麼事時,他的臉色就在我眼前變白了。感謝上帝,我們有捲影副本在運作。我見過的最快的主要復甦。在 5 分鐘(或更短的時間內),所有生產都恢復了。我們再也沒有提起過這件事。但我對 robocopy 和 /mir 開關非常小心。

紅迪網用戶

迄今為止批量刪除檔案/資料夾最快的方法是 robocopy,它可以使用 cmd.exe 運行(啟動速度可能快一兩秒,執行時間相同):

mkdir “%USERPROFILE%\empty” robocopy “%USERPROFILE%\empty” “%USERPROFILE%\AppData\Local\Temp” /mir rmdir “%USERPROFILE%\empty”

或使用 powershell.exe 或 pwsh.exe 運行,儘管聽起來這裡不需要 PowerShell:

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 |刪除項目-強制-遞迴-ErrorAction 靜默繼續

紅迪網用戶

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *