AutoHotkey:定时删除目录下指定分钟以前的文件,带UI界面

news2024/12/24 8:27:07

删除指定目录下,所有在某个指定分钟以前的文件,可以用来清理经常生成很多文件的目录,但又需要保留最新的一部分文件

支持拖放目录到界面

应用场景比如:游戏定时存档,日志目录、监控文件目录等

关于这个删除后备份,我的需求是这样,如果你要的是删除前备份,可以把_del()函数里的_bak()调用放到最前面

不多废话,直接上代码

SetWorkingDir %A_ScriptDir%

SplitPath, A_ScriptName,,,,IniFile
IniFile = %IniFile%.ini

Gui New, -0x10000 -0x30000 ;无最小化和最大坏按钮
Gui Font, s9, Segoe UI

Gui Add, Text, x10 y15 w34 h20 +0x200, 目录:
Gui Add, Edit, vEdtFolder gOnEdtFolderChange x64 y14 w299 h21

Gui Add, Text, x10 y51 w48 h23 +0x200, 分钟前:
Gui Add, Edit, vEdtMin gOnEdtMinChange x63 y51 w26 h21

Gui Add, CheckBox, vChkBak gOnChkBakChange x10 y88 w85 h23, 删除后备份

Gui Add, Text, x115 y50 w98 h23 +0x200, 检测间隔[分钟]:
Gui Add, Edit, vEdtInterval gOnEdtIntervalChange x216 y50 w26 h21

Gui Add, Edit, vEdtZipFile gOnEdtZipFileChange x100 y88 w265 h21

Gui Add, Button, gOnBtnStart x147 y130 w72 h23, 开始监视

;读取INI赋值
IniRead, Folder, % IniFile, Base, Folder
if (Folder = "" || Folder == "ERROR")
    Folder = 拖放文件夹到这里
IniRead, Min, % IniFile, Base, Min
if (Min = "" || Min == "ERROR")
    Min = 30
IniRead, Interval, % IniFile, Base, Interval
if (Interval = "" || Interval == "ERROR")
    Interval = 5
IniRead, IsBackup, % IniFile, Base, IsBackup
if (IsBackup = "" || IsBackup == "ERROR")
    IsBackup = 0
IniRead, ZipFile, % IniFile, Base, ZipFile
if (ZipFile = "" || ZipFile == "ERROR")
    ZipFile = 备份文件路径 [扩展名:.zip]
GuiControl,, EdtFolder, % Folder
GuiControl,, EdtMin, % Min
GuiControl,, EdtInterval, % Interval
GuiControl,, ChkBak, % IsBackup
GuiControl,, EdtZipFile, % ZipFile

Gui Show, w371 h169, 删除目录下指定分钟以前的文件
Return

OnEdtFolderChange:
global Folder
GuiControlGet, Folder, , EdtFolder
;MsgBox % Folder
IniWrite % Folder,  % IniFile, Base, Folder
Return

OnEdtMinChange:
global Min
GuiControlGet, Min, , EdtMin
IniWrite % Min,  % IniFile, Base, Min
Return

OnEdtIntervalChange:
global Interval
GuiControlGet, Interval, , EdtInterval
IniWrite % Interval,  % IniFile, Base, Interval
Return

OnChkBakChange:
global IsBackup
GuiControlGet, IsBackup, , ChkBak
IniWrite % IsBackup,  % IniFile, Base, IsBackup
Return

OnEdtZipFileChange:
global ZipFile
GuiControlGet, ZipFile, , EdtZipFile
IniWrite % ZipFile,  % IniFile, Base, ZipFile
Return

GuiDropFiles:
Loop, Parse, A_GuiEvent, `n
{
    global IniFile

    FirstFile = %A_LoopField%

    FileGetAttrib, Attributes, % FirstFile
    IfInString, Attributes, D ;是目录
        ;MsgBox This is a directory.
        GuiControl,, EdtFolder, % FirstFile ;自动调用onChange
    break
}
Return

OnBtnStart:
global Folder
if !FileExist(Folder)
{
    MsgBox 目录不存在!
    return
}

Gui, Hide

global Interval
_del()
SetTimer _del, % Interval * 60 * 1000
Return

GuiEscape:
GuiClose:
    ExitApp

_del(){
    global Folder ;必须引用
    global Min

    Loop  %Folder%\*
    {
        ;计算文件的最后修改时间距离当前时间的分钟数
        TimeNow := A_Now
        EnvSub TimeNow, A_LoopFileTimeModified, Minutes

        ;如果文件的最后修改时间超过了指定的分钟数,就删除该文件
        if (TimeNow > Min)
        {
            ;MsgBox %A_LoopFileFullPath%

            ;尽可能删除到回收站,否则使用FileDelete
            FileRecycle %A_LoopFileFullPath%
        }
    }

    _bak()
}

_bak()
{
    global Folder
    global ZipFile

    IfExist %ZipFile%
        FileRecycle %ZipFile%

    ;双引号路径可以处理空格
    Run 7z.exe a -tzip -r "%ZipFile%" "%Folder%",,Hide
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/888091.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Cloud Feign MultipartFile文件上传踩坑之路(包含前端文件上传请求、后端文件保存到aliyun-oss文件服务器)

Spring Cloud Feign MultipartFile文件上传踩坑之路总结 一、前端文件上传 文件上传组件用的是ant-design的a-upload组件,我的界面如下所示: 文件上传请求API: FileUtils.js import axios from "axios"const uploadApi ({file, URL, onUp…

NLP序列标注问题,样本不均衡怎么解决?

【学而不思则罔,思而不学则殆】 1.问题 NLP序列标注问题,样本不均衡怎么解决? 2.解释 以命名实体识别(NER)为例,这个样本不均衡有两种解释: (1)实体间类别数量不均衡…

从外部访问K8s中Pod的五种方式

hostNetwork、 hostPort、 NodePort、 LoadBalancer、 Ingress 暴露Pod与Service一样,因为Pod就是Service的backend 1、hostNetwork:true 这是一种直接定义 Pod 网络的方式。 如果在 Pod 中使用 hostNetwork:true 配置, pod 中运行的应用程序…

[计算机入门] 设置屏幕分辨率

3.1 设置屏幕分辨率 3.1.1 屏幕分辨率介绍 屏幕分辨率,是指屏幕上显示的像素个数,它决定了显示图像的清晰度和精细度。屏幕分辨率通常以水平像素数和垂直像素数来衡量,例如1600 x 1200。 在相同大小的屏幕上,当屏幕分辨率较低时…

vue中的路由缓存和解决方案

路由缓存的原因 解决方法 推荐方案二,使用钩子函数beforeRouteUpdate,每次路由更新前执行

[自学记录06|*百人计划]Gamma矫正与线性工作流

一、前言 Gamma矫正其实也属于我前面落下的一块内容,打算把它补上,其它的没补是因为我之前写的GAMES101笔记里已经涵盖了,而Gamma矫正在101里面确实没提到,于是打算把它补上,这块内容并不难,但是想通透的理…

什么是CSS预处理器?请列举几个常见的CSS预处理器。

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CSS预处理器是什么?⭐ 常见的CSS预处理器⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是…

FPGA_学习_14_第一个自写模块的感悟和ila在线调试教程与技巧(寻找APD的击穿偏压)

前一篇博客我们提到了,如果要使用算法找到Vbr,通过寻找APD采集信号的噪声方差的剧变点去寻找Vbr是一个不错的方式。此功能的第一步是在FPGA中实现方差的计算,这个我们已经在上一篇博客中实现了。 继上一篇博客之后,感觉过了很久了…

这场大学生竞赛中,上百支队伍与合合信息用AI共克难题

目录 0 校企联合共克难题1 北京林业大学:文档格式转换2 浙江中医药大学:个性化题库3 中南林业科技大学:交互场景挖掘4 重庆邮电大学:大模型赋能智能文档5 总结 0 校企联合共克难题 近日,中国大学生服务外包创新创业大…

如何使用CSS实现一个响应式视频播放器?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现响应式视频播放器⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣…

avue多选列表根据后端返回的某个值去判断是否选中;avue-curd多选回显

效果如上: getSiteList().then(res > {//列表数据this.siteData res.data.datathis.$nextTick(()>{this.siteData.forEach(item>{//业务条件if(item.configid&&item.configid!0&&item.configid>0){//符合条件时调用选中的方法this.$…

一文科普,买股票加杠杆是怎么回事?其利弊表现在哪?

买股票加杠杆是一种投资策略,通过借入资金来增加投资额度,进而放大投资回报。这种策略的利弊主要表现在以下几个方面。 首先,加杠杆的主要利表现在于放大投资回报。借入的资金可以投资更多的股票,当股票价格上涨时,投资…

XDR解决方案三

XDR未来的进化之路 精细化、智能化、个性化和场景化 当前XDR未来发展方向的问题分享了他的洞察和思考。刘庆林认为,精细化、智能化、个性化和场景化将是未来XDR的重要方向。 首先,实现精准防护的唯一路径,就是要从云、管、边、端、人五个维…

8.15 IO的多路复用

select的TCP客户端 poll的TCP客户端

探索网络架构的关键角色:六种常用的服务器类型

在今天的数字时代,服务器是支撑各种在线服务和应用的基石。不同类型的服务器在网络架构中扮演着不同的角色,从网页传输到电子邮件交换,再到文件传输和内容分发。本文将深入探讨六种最常用的服务器类型,解释它们的功能和重要性&…

梅林(Asuswrt-Merlin)>384.7固件自定义DDNS服务

指南https://github.com/RMerl/asuswrt-merlin.ng/wiki/DDNS-services配置文件示例https://github.com/troglobit/inadyn/tree/master/examples1 插入优盘,下载配置文件示例修改,以cloudflare为例 provider cloudflare.com {username 域名.compassword…

【后端必看】Redis 最佳实践

文章目录 1. Redis 键值设计1.1 优雅的 key 结构1.2 拒绝 BigKeyBigKey的危害如何发现BigKey①redis-cli --bigkeys② scan 扫描③第三方监控④网络监控 如何删除 BigKey 1.3 恰当的数据类型总结: 2. 批处理优化3. 服务器端优化-持久化配置4. 服务器端优化-慢查询优…

SpringBoot案例-员工管理-分页条件查询

根据页面原型,明确需求 页面原型 需求 查看接口文档 接口文档的链接如下: 【腾讯文档】SpringBoot案例所需文档 https://docs.qq.com/doc/DUkRiTWVaUmFVck9N 思路分析 分页条件查询就时将条件查询的结果进行分页展示,由于有的条件可能设…

问题:RuntimeError: Distributed package doesn‘t have NCCL built in

现象 python在windows环境下dist.init_process_group(backend, rank, world_size)处报错‘RuntimeError: Distributed package doesn’t have NCCL built in’ 原因分析 windows不支持NCCL backend 方法1 import sysif sys.platform "win32":os.environ["…

基于X86六轮差速移动机器人运动控制器设计与实现(一)软件与硬件架构

本文研究的六轮差速移动机器人 (Six-Wheeled Differential Mobile Robot , SWDMR) 为了满足资源站到资源站点对点的物资运输,对机器人的跨越障碍能力 有较高的要求。对比传统的四轮移动机器人,六轮移动机器人能够提供更强的驱动 力&#…