2015-10-16 246 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

谢谢我保存这个 –