date - 删除日期后的所有文件,代码很慢

标签 date batch-file time cmd delete-file

上周我提出了一个关于获取批处理文件或代码来删除过去 60 天之前创建的文件夹中的所有 .txt 文件的问题,我被指示使用下面的代码。

forfiles -p "J:\Test_Files" -s -m *.txt* -d 60 -c "cmd /c del @path"

这段代码完成了这项工作并且工作正常,但每分钟删除 250 个文件的速度太慢。我总共需要删除 2,600,000 个文件,这会花费很长时间。

我下面使用的代码每秒删除 200 个文件,但删除所有 .txt 文件

cd /BASE_PATH
del /s *.txt

如何编辑此代码以删除 60 天之前创建的文件?我需要它以更快的速度删除。

感谢您的帮助! :D

最佳答案

你可以尝试一下

@echo off
    setlocal enableextensions disabledelayedexpansion

    rem Configure script
    set "target=J:\Test_Files"
    set "fileMask=*.txt"
    set "age=60"

    rem We will use a temporary file. 
    for %%t in ("%temp%\%~nx0.%random%%random%%random%.tmp") do (

        rem Send to temp file the list of matching files retrieved by the robocopy command
        >"%%~ft" robocopy "%target%." "%target%." "%fileMask%" /minage:%age% /l /nocopy /is /s /njh /njs /ndl /nc /ns

        rem Process temporary file deleting the selected files
        for /f "usebackq tokens=*" %%f in ("%%~ft") do echo del "%%~ff"

        rem Once done, remove the temporary file
    ) & del /q "%%~ft"

del 命令仅回显到控制台。如果输出正确,请删除 echo 命令。

关于date - 删除日期后的所有文件,代码很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33355900/

相关文章:

scripting - 以批处理脚本将文件夹从一个目录移动到另一个目录

batch-file - 如何确定 *.bat 文件是从控制台运行还是单独运行?

javascript - JS 秒表定时器 H :m:s:ms format, 当达到 60 分钟时,分钟不会重置

javascript - Date.toString 和 Date.toLocaleDateString 在 Chrome 和 Firefox 之间不一致?

java - 不同编程语言中的日期与系统日期不匹配

javascript - 获取不同时区日期的 UTC 偏移量

windows - 更改 .bat 文件中的代码页(Win7 与 Win Vista)

c++ - 从 char 转换为 string 时丢失编码

r - 时区在R系统时间的输出中消失

sorting - javamail imap如何通过接收日期desc获取邮件订单