【问题标题】:How do I write a batch file to delete folders and files on a time basis?如何编写批处理文件以按时间删除文件夹和文件?
【发布时间】:2010-10-12 03:43:54
【问题描述】:

完全重复:

我想写一个批处理文件来按时删除文件夹、子文件夹和临时文件。

条件是这样的:

  • 我需要从文件夹中删除文件一小时前到当前运行时间。
  • 我想从系统中获取当前时间并删除前一小时的文件
  • 文件格式是这样的:<file name> <date>
  • 时间格式为dd-mm-yyyy-hh-mmdd-mm-yy-hh-mm

【问题讨论】:

  • 查看 *.com/questions/613803/…> 答案并相应调整。应该不难。
  • 它们显然不是“精确的”,因为它们都有不同的标题;)

标签: scripting batch-file


【解决方案1】:

Batch 可能非常强大,但我认为您想要的那种日期操作并不实用。

您可以使用FOR 将日期拆分为元素,然后使用SET /A 进行减法,但是您将需要大量的IFGOTO 语句来处理诸如从 1 月 1 日午夜半点减去一个小时。

我认为你最好调查一下VBSPowershell

【讨论】:

    【解决方案2】:

    您可能想尝试使用此脚本从文件夹中删除超过 1 小时的文件。

    # Script Delete1Hour.txt
    var str folder, list, file
    cd $folder
    lf -n "*" $folder ($ftype=="f") AND ( $fmtime < addtime(diff("-10000")) ) > $list
    while ($list <> "")
    do
        lex "1" $list > $file
        system del ("\""+$file+"\"")
    done
    

    这是双脚本。重要的命令是

    lf -n "*" $folder ($ftype=="f") AND ( $fmtime < addtime(diff("-10000")) )
    

    这告诉 biterscripting - 给我文件夹 $folder 中的所有条目,其名称与文件类型为“f”(平面文件,而不是目录)的模式“*”匹配,并且其文件修改时间 ($fmtime) 更早1小时以上。请参阅http://www.biterscripting.com/helppages/lf.html 的 lf 命令文档。

    将脚本保存在文件 C:/Scripts/Delete1Hour.txt 中,运行为

    script  "C:/Scripts/Delete1Hour.txt" folder("C:/testfolder")
    

    它将删除 C:/testfolder 中所有超过 1 小时的文件。

    【讨论】:

      最近更新 更多