快速刪除複雜目錄

上次更新了02 / 26 / 2020

通常,如果目錄包含少量子目錄和文件,則刪除目錄的速度相當快。 但是,如果目錄具有復雜的結構,包含數百或數千個子目錄和文件,則刪除它們可能需要幾分鐘甚至幾小時。 命令行開銷較小,可以在短時間內刪除複雜目錄,有時被引用為 快20倍或更多 而不是傳統的資源管理器選項。 本指南說明如何使用批處理文件自動刪除大型目錄,或使用本機自動刪除命令行 Windows 命令和工具。 其他部分介紹了具有CLI組件的免費軟件GUI刪除程序。 本指南的重點是快速刪除方法,而不是用於使文件無法恢復的安全或永久刪除方法。 安全刪除方法是另一個主題,並且由於它涉及覆蓋文件(通常使用幾遍操作),因此速度較慢。

刪除

資源管理器在刪除目錄時可能會非常慢,因為它會計算文件夾大小,文件夾中的項目數以及處理前的估計完成時間,並報告已刪除的項目,剩餘的刪除,當前的刪除以及監視和報告情況處理過程中的任何衝突。 即使清空回收站或使用Shift + Del直接刪除文件和文件夾,這些過程仍然有效。 使用命令行消除了這種開銷,從而加快了刪除過程。 請記住,相對於標準刪除過程而言,速度更快,因此刪除數GB的文件和目錄可能仍需要大量時間。 例如,由 超級用戶 該成員發現,使用經過測試的最快的命令行方法(DEL和RMDIR命令的組合),平均需要53分鐘才能刪除28.3個文件夾中的1,159,211個文件組成的146,918 GB。 如果要定期刪除文件和文件夾,則最快的方法可能是將它們保存到專用分區,然後格式化該分區以刪除所有內容。

命令

儘管RMDIR命令可以刪除目錄及其文件,但比兩步過程中使用DEL和RMDIR命令要慢得多。 DEL命令刪除文件,RMDIR命令刪除目錄結構。

del /f/q/s "%folder%" >nul

用作刪除文件並將其輸出到nul的第一遍,以避免寫入屏幕的開銷

rmdir /q/s "%folder%"

第二次刪除目錄結構

  • / f –強制刪除只讀文件
  • / q –安靜模式,不要求刪除
  • / s –包含子目錄

機器人復制

刪除文件夾文件的另一種方法是RoboCopy。 目標文件夾是從空的源目錄鏡像的,這會強制RoboCopy刪除不在源目錄中的任何文件。

RoboCopy刪除目標目錄中所有文件的主要命令:

robocopy "EmptyDir" "DestinationDir" /MIR /ETA

  • / MIR –鏡像目錄
  • / ETA –預計時間

RoboCopy處理目錄和目錄中的文件集,而不是單個文件。 在使用RoboCopy的示例批處理文件中,RMDIR仍用於刪除臨時空目錄和父目標目錄,而DEL用於刪除文件。

使用批處理文件

批處理文件(包括下面的示例文件)可以從命令行(帶有參數),發送到目錄,右鍵單擊上下文菜單或通過拖放操作(最簡單的方法)使用。

命令行

批處理文件可以從 Windows 帶有參數的命令提示符,或者為方便起見添加到環境路徑中。

要從命令提示符處執行,請打開一個新的cmd提示符,導航至該批處理文件的位置並輸入其全名,或輸入該批處理文件的完整路徑。 確保添加要刪除的目錄和/或文件作為參數。 還請在所有帶有空格的文件路徑周圍加上引號:

例如 “ C:程序Filesdelete_file_folder_fast_simple_v2.bat”“ C:要刪除的文件夾或文件”

用參數之間的空格分隔多個參數。

將批處理文件的文件夾添加到 Windows 環境變量允許在任何cmd提示符下都可以使用它,而無需導航到批處理文件的位置或鍵入其完整路徑。 要將批處理文件的路徑添加到 Windows 使用環境:

開始–>控制面板–>系統–>高級系統設置–>高級選項卡–>環境變量–>系統變量–>路徑–>編輯。

將路徑;例如:C:path添加到批處理文件; 到結尾(不要忘記開頭和結尾的單個分號)。 點擊確定三下。

右鍵單擊上下文菜單

該選項使用戶可以右鍵單擊文件夾,然後從彈出菜單中選擇批處理文件。 實現此目的的步驟是:

  1. 按 WINDOWS KEY + R打開“運行”對話框
  2. 輸入regedit並按Enter
  3. 導航到HKEY_CLASSES_ROOTDirectoryshell
  4. 右鍵單擊黃色的外殼鍵。 選擇新建>密鑰
  5. 輸入名稱:Delete&Fast然後按Enter
  6. 右鍵單擊創建的Delete&Fast文件夾,然後選擇“新建”>“密鑰”
  7. 輸入“命令”,然後按Enter。
  8. 左鍵單擊創建的黃色命令鍵。 雙擊(默認)條目。
  9. 在“數值數據”字段中,輸入要使用的批處理文件,例如, cmd / c” C:todelete_file_folder_fast_simple_v2.bat的路徑“%1” 然後按確定

完成上述操作的另一種方法是使用reg文件。 複製以下代碼,將其粘貼到文件編輯器中,並將其另存為“ Delete Fast.reg”。 雙擊該文件以將其內容合併到註冊表中,然後右鍵單擊菜單即可使用。

Windows 註冊表編輯器版本5.00 [HKEY_CLASSES_ROOTDirectoryshellDelete&Fastcommand] @ =“ cmd / c” C:指向delete_file_folder_fast_simple_v2.bat的路徑“%1”

發送到目錄

另一個選項是“發送到目錄”,只需創建一個快捷方式並將其添加到適當的目錄中即可:

對於較新的版本 Windows,發送到目錄位於:

C:Users<yourusername>AppDataRoamingMicrosoftWindowsSendTo

對於XP,位置為:

C:Documents and Settings<yourusername>SendTo

要使用,請右鍵單擊文件或目錄,然後從“發送到”菜單中選擇批處理文件。

拖放

使用示例批處理文件的最簡單方法是將文件夾或文件拖放到它們上。 未經用戶確認,不會刪除任何文件或文件夾。

示例批處理文件中的差異

delete_files_folders_fast_v2.bat. –列出多個要刪除的文件和文件夾,父目錄,有限的文件夾/文件屬性,以及有關要刪除的文件和文件夾的名稱和數量的有限信息。 還包括延遲退出,允許在窗口關閉之前檢查文件和文件夾的刪除信息(默認10秒)。

delete_file_folder_fast_simple_v2.bat. –僅限一次刪除一個文件或一個文件夾。 除了詢問用戶是否確實要刪除顯示的文件或文件夾外,沒有提供太多交互或反饋。 刪除文件或文件夾後自動退出。

delete_files_folders_fast_robocopy_v3.bat –基本上與 delete_file_folder_fast_simple_v2.bat. RoboCopy的輸出在執行期間和處理文件後顯示。 批處理文件在執行後被暫停,允許用戶查看結果而不會自動退出。 更新了01-29-20。

delete_files_folders_fast_robocopy_silent_v3.bat –與上面基本相同,只是不顯示RoboCopy的輸出,以便更快地執行和處理。 批處理文件在10秒鐘的延遲後自動退出。 添加了01-29-20。

delete_file_folder_fast_simple_robocopy_v2.bat –僅限一次刪除一個文件或一個文件夾。使用RoboCopy代替DEL刪除文件夾內容。 RoboCopy輸出重定向到nul以消除命令輸出。 刪除文件或文件夾後自動退出。

delete_file_folder_fast_byenow_v1.bat. –使用命令行程序byenow刪除文件夾及其所有文件和子目錄。使用byenow的默認設置。 批處理文件在完成時暫停。

delete_file_folder_fast_byenow_ntapi_v1.bat. –使用命令行程序byenow刪除文件夾及其所有文件和子目錄。 與以前的批處理文件相同,但使用–delete-ntapi選項。 批處理文件在完成時暫停。

批處理文件可以重命名,並且可以相同地工作。

使用DEL,RMDIR和RoboCopy的示例批處理文件

左鍵單擊可在當前窗口中查看文件,或單擊鼠標右鍵並使用“鏈接另存為”下載。批處理文件已從以前的版本更改,因為/ S開關大大降低了刪除單個文件時的性能。 / S開關仍在使用,但僅用於文件夾。
備註: 使用前,請刪除“ .txt”擴展名。

下面的批處理文件僅使用RMDIR和DEL命令。

注意:此帖子中嵌入了一個文件,請訪問此帖子下載該文件。

注意:此帖子中嵌入了一個文件,請訪問此帖子下載該文件。

以下批處理文件使用RoboCopy刪除文件夾文件,使用RMDIR刪除空文件夾,並使用DEL刪除單個文件。 如果RoboCopy已安裝但未包含在 Windows 環境路徑,請確保在批處理文件中更改系統RoboCopy的路徑(不要忘記刪除REM來啟用它)。 如果RoboCopy已安裝並包含在路徑中,則無需更改批處理文件。 要檢查,請在命令提示符下鍵入“ robocopy:”。 如果RoboCopy執行,則它已經安裝並包含在環境路徑中。

注意:此帖子中嵌入了一個文件,請訪問此帖子下載該文件。

注意:此帖子中嵌入了一個文件,請訪問此帖子下載該文件。

注意:此帖子中嵌入了一個文件,請訪問此帖子下載該文件。

免費軟件刪除工具

有許多GUI和命令行文件及文件夾刪除工具可用,但是大多數工具集中於安全刪除,並且不提供標準刪除選項。 以下免費軟件實用程序能夠從GUI和命令行執行標準刪除和安全刪除。

這些基於GUI的工具可以從命令行通過主要可執行文件使用,也可以通過使用單獨的命令行可執行文件來工作。 使用這些工具而不是使用本機的優勢 windows 像RMDIR和DEL這樣的命令可以更輕鬆地配置複雜的刪除選項,例如根據修改或創建日期,大小或類型刪除文件或文件夾,以及寫入日誌,將進程發送到後台,設置系統自動關閉,使用單個命令行排除/包括特定文件和文件夾,停止錯誤並設置許多其他選項。

快速復制

快速復制 是一個複制/備份實用程序,還可以對單個文件和文件夾執行標準且有限的安全刪除。 通過在安裝過程中選擇解壓縮,可以將其安裝為常規程序或便攜式應用程序。 程序可執行文件還接受來自命令行的命令。

可以將文件和文件夾拖放到界面上以設置源目錄或目標目錄。 在“選項”菜單中,可以將程序配置為安裝Shell擴展,以使FastCopy可以通過使用以下菜單中的右鍵菜單來刪除,複製或移動文件/文件夾: Windows 資源管理器。

FastCopy主界面

FastCopy界面

FastCopy刪除選項

FastCopy刪除選項

FastCopy Shell擴展選項

FastCopy Shell擴展選項

FastCopy命令行和批處理文件

可以找到FastCopy的命令行選項列表 聯機幫助頁面 並在應用程序的幫助文件中。 下面的批處理文件配置為使用拖放操作通過兩個選項來刪除文件和文件夾:(1)在刪除並禁用日誌記錄之前不要求確認,以及(2)在刪除並啟用日誌記錄之前要求確認。 批處理文件在執行後暫停。 批處理文件配置為使用便攜式安裝。

第一個FastCopy命令行的細目分類(無確認,無日誌記錄):

FastCopy.exe / cmd =刪除/ no_confirm_del / log = FALSE / auto_close%*

  • / cmd =刪除-刪除命令
  • / no_confirm_del –刪除前不確認
  • / log = FALSE –禁用對日誌文件的寫操作/錯誤信息
  • / auto_close –執行完成後自動關閉,沒有錯誤
  • %* –所有拖放的文件和文件夾

FastCopy的示例批處理文件(使用前刪除.txt擴展名):

注意:此帖子中嵌入了一個文件,請訪問此帖子下載該文件。

快速文件夾橡皮擦專業版

快速文件夾橡皮擦專業版 是已安裝的免費軟件程序。 它可以從命令行或從GUI界面執行標準刪除和安全刪除。 獨立的命令行可執行文件位於命令行文件夾中,該文件夾包含兩個CLI可執行文件(32位版本和64位版本)。

這是一個專門設計用來刪除目錄及其中的子文件夾和文件的實用程序。 與FastCopy不同,它無法按文件名刪除單個文件,但可以根據大小,日期和其他過濾器刪除單個或文件組,並且可以使用通配符排除文件。 儘管可以將文件夾和文件直接拖放到GUI界面上進行刪除,但是測試顯示,當將文件拖放到GUI上時,該程序還刪除了與該文件相同目錄中的所有其他文件和文件夾。 將文件夾拖放到GUI上或使用CLI可執行文件刪除文件夾都沒有問題。 CLI可執行文件無法刪除單個文件,並且如果delete命令使用了單個文件路徑,則會生成錯誤。

與FastCopy相比,命令行選項的數量受到限制。 例如,在刪除文件之前不存在啟用或禁用確認的選項,因此必須使用以下命令將確認選項編程到批處理腳本中 Windows 命令以獲取此功能。

快速文件夾橡皮擦專業版界面

快速文件夾橡皮擦專業版界面

快速文件夾橡皮擦專業版刪除選項

快速文件夾橡皮擦專業版刪除選項

快速文件夾橡皮擦Pro命令行和批處理文件

獨立CLI可執行文件的幫助文件與兩個可執行文件一起位於命令行文件夾中,兩個可執行文件是32位CLI可執行文件FFECmd32.exe和64位可執行文件FFECmd64.exe。 下面的批處理文件配置為使用32位可執行文件進行拖放,包括刪除前的確認以及執行後的暫停。與FastCopy不同,在FastCopy中,可以使用單個命令處理多個文件和文件夾,而Fast Folder Eraser中的CLI可執行文件Pro一次只能處理一個單一文件夾。 如果將多個文件夾拖放到批處理文件中,則第一個之後的文件夾將被忽略。 如果將一個或多個文件拖放到批處理文件中,則不會處理這些文件。

批處理文件中使用的byenow命令行的細分:

FFECmd32.exe /路徑%* / r / logfail

  • / path%* –啟動刪除的目錄的絕對路徑
  • / r –遞歸子目錄
  • / logfail –將不成功的文件刪除記錄到日誌文件中

Fast Folder Eraser Pro的示例批處理文件(使用前刪除.txt擴展名):

注意:此帖子中嵌入了一個文件,請訪問此帖子下載該文件。

byenow命令行實用程序

再見了 是專門用於刪除單個文件夾下的文件和目錄的專用命令行工具。 它使用其他刪除工具未發現的幾種策略來簡化和優化刪除過程,例如:(1)提供基本但不是冗長的處理信息,(2)禁止確認的選項,(3)使用所有可用的CPU內核默認情況下,以及(4)使用 刪除文件 API,而不是標準的刪除過程(刪除文件 API)刪除文件。 NtDeleteFile API更快,因為它只需要一個 系統調用 而不是標準DeleteFile API所需的三個syscall。 byenow還顯示完成刪除過程所需的時間。 以下是byenow的用戶可設置選項的摘要列表:

  • 預覽要刪除的數字文件和文件夾
  • 設置線程數(默認情況下使用與CPU內核相同的線程數)
  • 禁止確認
  • 列出錯誤
  • 單行顯示進度
  • 分階段刪除–掃描第一個文件夾,然後刪除
  • 使用NtDeleteFile API代替默認的DeleteFile API

byenow選項

byenow選項

byenow預覽模式

byenow預覽

byenow命令行和批處理文件

由於byenow已使用其默認設置針對文件刪除進行了優化,並且其選項可從命令行設置,因此僅需要基本批處理文件即可在命令窗口中啟動程序。 提供了兩個批處理文件,一個具有默認設置,另一個使用NtDeleteFile API。 由於byenow是僅命令行程序,因此請確保在批處理文件中設置byenow的路徑。

byenow命令行的細分(帶有NtDeleteFile API選項):

byenow“%〜1” –刪除ntapi

  • –delete-ntapi –使用NtDeleteFile API而不是DeleteFile API

byenow的示例批處理文件(使用前刪除.txt擴展名):

注意:此帖子中嵌入了一個文件,請訪問此帖子下載該文件。

注意:此帖子中嵌入了一個文件,請訪問此帖子下載該文件。

批處理文件基準

通過使用標準對批處理文件進行基準測試來比較這些批處理文件 Windows 刪除過程作為基準。 創建了12255個相同的測試目錄,每個目錄由1599個目錄中的1658個文件組成,總計XNUMXMB。 使用計時器和/或在適當情況下使用記錄的時間對每個批處理文件計時,以測量它們刪除測試目錄所花費的時間。

批處理文件結果(分鐘:秒)
delete_files_folders_fast_byenow_v1.bat.TBD
delete_files_folders_fast_byenow_ntapi_v1.batTBD
delete_file_folder_fast_simple_robocopy_v2.bat0:26
delete_files_folders_fast_robocopy_silent_v3.bat0:31
delete_file_folder_fast_simple_v2.bat.0:32
delete_files_folders_fast_v2.bat.0:34
Fastcopy_delete_file_folders_v1.bat(確認)0:37
Fastcopy_delete_file_folders_v1.bat(未確認)0:40
fastfoldereraserpro_delete_file_folders.bat.0:44
delete_files_folders_fast_robocopy_v3.bat0:49
Windows 標準刪除以回收站*1:57

*時間包括將測試目錄發送到回收站的0:40秒和清空回收站的1分零17秒(0:40 + 1:17 = 1:57)。

結論

經過測試的大多數命令行工具都比使用速度更快 Windows 標準刪除,尤其是在包含清空回收站所需的時間時。 最快的命令行工具幾乎是速度最快的命令行工具的兩倍 Windows 將文件發送到回收站的標準刪除過程,速度比以前快4倍以上 Windows 當考慮到清空回收站所需的時間時,抑制輸出並禁用日誌記錄有助於提高命令行工具的性能,但是最重要的因素似乎是所有命令行工具都直接刪除文件,而不是使用回收站。 測試表明,與完整版本相比,直接刪除文件的任何程序都會自動顯得更快。 Windows 標準的刪除過程,即使它們實際上比時間慢 Windows 僅需要將已刪除的文件發送到回收站。

所使用的測試目錄實際上很小,實際上並不能代表“真實世界”的情況,並且大多數用戶不太可能使用專門的刪除工具來偶爾刪除小於3-4 GB的目錄。 儘管可以用作“粗略估計”,但更現實的測試方案是使用更大或更複雜的目錄結構(可能約為50 GB或更多)來測試各種批處理文件命令。