【问题标题】:Mass delete file extension batch file批量删除文件扩展批处理文件
【发布时间】:2015-10-16 17:20:46
【问题描述】:

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

我可以让它更快吗?

【问题讨论】:

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


    【解决方案1】:

    我能想到的最快的方法就是:

    cd /BASE_PATH
    del /s *.txt
    

    您可能最好让操作系统按顺序删除文件,而不是尝试并行删除多个文件。如果您使用的是机械 HDD 而不是 SSD,您可能会将文件放在不同的盘片、磁头、扇区等上,并且根据您对 I/O 绑定资源施加的负载量,整体操作需要更多时间,因为驱动器必须到处寻找数据。另外,对 HDD 的随机访问非常糟糕。

    【讨论】:

    • @TevinMosley 没有问题。如果这些答案有帮助,请考虑投票并“接受”其中一个。
    • 您可能还想将 /Q 和 /F 添加到 DEL 命令中,以便它运行更安静,并且还可以核对只读文件。
    【解决方案2】:

    您可能想这样尝试:

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

    当您确定要运行此程序时删除“ECHO”;-)

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

    【讨论】:

    • 谢谢我保存了这个
    猜你喜欢
    • 2011-03-14
    • 2011-09-18
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 2021-09-18
    相关资源
    最近更新 更多