您好我有一个我创建的批处理文件,用于删除运行时要求的某个扩展名的所有文件。我需要删除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
我可以加快速度吗?
答案 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解决方案会更短。