批量删除文件扩展名批处理文件

时间:2015-10-16 17:20:46

标签: performance file batch-file cmd delete-file

您好我有一个我创建的批处理文件,用于删除运行时要求的某个扩展名的所有文件。我需要删除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 个答案:

答案 0 :(得分:2)

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

cd /BASE_PATH
del /s *.txt

你最好让操作系统按顺序删除文件,而不是试图并行删除多个文件。如果您使用的是机械硬盘而不是SSD,则可能在不同的盘片,磁头,扇区等上放置文件,并且根据您对I / O绑定资源的负载量,整个操作需要更长的时间。驱动器必须遍布整个地方寻找数据。另外,硬盘上的随机访问非常糟糕。

答案 1 :(得分:1)

您可能希望以这种方式尝试:

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

如果您确定要运行此选项,请删除“ECHO”; - )

但是,只有当您想要单独处理每个文件时,这才有意义,例如用于记录目的。如果没有,那么@Dogbert解决方案会更短。