2015-10-16 187 views
-2

你好我有一個批處理文件,我已經創建了一個批處理文件來刪除它在運行時要求的所有文件。我需要刪除2,111,000個.txt文件,批處理文件每次只刪除3個,這將永遠刪除文件。有沒有辦法讓我的速度更快,或者如果有人有更好的代碼來做到這一點?批量刪除文件擴展批處理文件

這裏是我的代碼:

@ECHO OFF 
CLS 

SET found=0 
ECHO Enter the file extension you want to delete... 
SET /p ext="> " 

IF EXIST *.%ext% (   rem Check if there are any in the current folder :) 
DEL *.%ext% 
SET found=1 
) 
FOR /D /R %%G IN ("*") DO ( rem Iterate through all subfolders 
IF EXIST %%G CD %%G 
IF EXIST *.%ext% (
DEL *.%ext% 
SET found=1 
) 
) 

IF %found%==1 (
ECHO. 
ECHO Deleted all .%ext% files. 
ECHO. 
) ELSE (
ECHO. 
ECHO There were no .%ext% files. 
ECHO Nothing has been deleted. 
ECHO. 
) 

PAUSE 
EXIT 

我可以做出這樣跑得更快?

回答

2

我能想象的最快捷方式就是:

cd /BASE_PATH 
del /s *.txt 

你可能會更好只是讓操作系統依次刪除文件,而不是試圖在平行刪除多個文件反正。如果您使用的是機械硬盤而不是SSD,則您可以在不同的磁盤,磁頭,扇區等上存儲文件,並且根據您投入I/O綁定資源的多少負載,整體操作需要更多時間該驅動器必須在各處尋找數據。另外,硬盤上的隨機訪問也很糟糕。

+0

謝謝你,這在35分鐘內就像一個魅力 –

+0

@TevinMosley沒有概率。如果這些答案有幫助,請考慮提高他們並「接受」一個。 – DevNull

+1

您可能還想將/ Q和/ F添加到DEL命令中,以便它運行更安靜,並且還會讀取只讀文件。 –

1

你可能想嘗試一下這種方法:

DIR C:\*.txt /S /B > filelist 
FOR /f %%i in (filelist) DO ECHO DELETE %%i 

刪除「ECHO」當你確定要運行這個;-)

但這僅是有道理的,當你想例如,爲了記錄目的,分別處理每個文件。如果不是,那麼@Dogbert解決方案更短。

+0

謝謝我保存這個 –