[AHK] 7zDT - 给 7-Zip 压缩界面添加“日期/时间命名”功能

7-Zip 自身缺乏给压缩包文件名添加“日期/时间”的功能,只能在生成压缩包之后再重命名。本脚本后台运行,检测到 7-Zip 的“添加到压缩包”窗口后会在右侧生成一个窗口,包含六个按钮,对应六种日期/时间命名方式,点击相应按钮后自动生成压缩包。

这六种命名方式是根据自己需要结合前两天的调查帖子结果确定的。

生成的六种文件名分别是这样的:

111

编译版下载:https://github.com/fffb/7zDT/releases

PS:这是人生写的第一个能运行的 AHK 脚本,有意见建议请多指教 :pray:

代码如下:

#Persistent
#SingleInstance Force
SetTimer, 7z

;Menu, Tray, Icon, 7zDT.ico, 1
Menu, Tray, NoStandard ; 不显示 ahk 自己的菜单
Menu, Tray, Tip, 7zDT ; 托盘提示信息
Menu, Tray, Add, 重载, RL
Menu, Tray, Add, 退出, Exit7zDT
Return

RL:
    Reload

Exit7zDT:
ExitApp

7z: 
    if WinExist("添加到压缩包")
    {
        WinGetPos, Xpos, Ypos, W7z ;获取7z压缩界面的屏幕位置和窗口宽度
        Xpos2 := Xpos+W7z ;横坐标设为7z压缩界面的最右边
        Gui, Show, x%Xpos2% y%Ypos% h430 w170, 选择插入模式
        Gui, Font, c0066cc
        Gui, Add, Button, x30 y10 w110 h40 gMode1, ← 日期在前 1
        Gui, Add, Text, xp y55 w150 h30, YYYY-MM-DD_name.7z

        Gui, Add, Button, xp yp+25 w110 h40 gMode2, ← 日期在前 2
        Gui, Add, Text, xp yp+45 w150 h30, YYYYMMDD_name.7z

        Gui, Add, Button, xp yp+25 w110 h40 gMode3, 日期在后 1 →
        Gui, Add, Text, xp yp+45 w150 h30, name_YYYY-MM-DD.7z

        Gui, Add, Button, xp yp+25 w110 h40 gMode4, 日期在后 2→
        Gui, Add, Text, xp yp+45 w150 h30, name_YYYYMMDD.7z

        Gui, Add, Button, xp yp+25 w110 h40 gMode5, 日期时间在后 1 →
        Gui, Add, Text, x12 yp+45 w150 h30, name_YYYY-MM-DD_HHMMSS.7z

        Gui, Add, Button, x30 yp+25 w110 h40 gMode6, 日期时间在后 2 → 
        Gui, Add, Text, x12 yp+45 w150 h30, name_YYYYMMDD_HHMMSS.7z
        Gui -SysMenu +ToolWindow ;删除点击窗口左上角时弹出的系统菜单和图标,同时也删除标题栏上的最小化, 最大化和关闭按钮,让窗口显示细标题栏, 同时去除任务栏按钮
        WinActivate, 添加到压缩包
        SetTimer, 7z, Off ;禁用计时器,防止7z界面刷新导致的无法点击
        Gosub, 7zexit
    } 
Return

7zexit: ;检测到 7z 窗口关闭后同步关闭
    SetTimer, 7zexit
    if not WinExist("添加到压缩包")
    {
        Gui Destroy
        SetTimer, 7zexit, Off
        SetTimer, 7z
    }
Return

Mode1:
    WinActivate, 添加到压缩包
    ControlFocus, Edit1, 添加到压缩包
    Send {left}%A_YYYY%-%A_MM%-%A_DD%_
    SetControlDelay -1 ;在 ControlClick 期间用户同时在使用鼠标时提高稳定性,不加本行下一行运行会出错
    ControlClick, Button14, 添加到压缩包
    Gui Destroy
    SetTimer, 7z
Return

Mode2:
    WinActivate, 添加到压缩包
    ControlFocus, Edit1, 添加到压缩包
    Send {left}%A_YYYY%%A_MM%%A_DD%_
    SetControlDelay -1
    ControlClick, Button14, 添加到压缩包
    Gui Destroy
    SetTimer, 7z
Return

Mode3:
    WinActivate, 添加到压缩包
    ControlFocus, Edit1, 添加到压缩包
    ControlGetText, filename, Edit1, 添加到压缩包
    SplitPath, filename,,, ext, name_no_ext
    Send %name_no_ext%_%A_YYYY%-%A_MM%-%A_DD%.%ext%
    Sleep 500
    SetControlDelay -1
    ControlClick, Button14, 添加到压缩包
    Gui Destroy
    SetTimer, 7z
Return

Mode4:
    WinActivate, 添加到压缩包
    ControlFocus, Edit1, 添加到压缩包
    ControlGetText, filename, Edit1, 添加到压缩包
    SplitPath, filename,,, ext, name_no_ext
    Send %name_no_ext%_%A_YYYY%%A_MM%%A_DD%.%ext%
    Sleep 500
    SetControlDelay -1
    ControlClick, Button14, 添加到压缩包
    Gui Destroy
    SetTimer, 7z
Return

Mode5:
    WinActivate, 添加到压缩包
    ControlFocus, Edit1, 添加到压缩包
    ControlGetText, filename, Edit1, 添加到压缩包
    SplitPath, filename,,, ext, name_no_ext
    Send %name_no_ext%_%A_YYYY%-%A_MM%-%A_DD%_%A_Hour%%A_Min%%A_Sec%.%ext%
    Sleep 500
    SetControlDelay -1
    ControlClick, Button14, 添加到压缩包
    Gui Destroy
    SetTimer, 7z
Return

Mode6:
    WinActivate, 添加到压缩包
    ControlFocus, Edit1, 添加到压缩包
    ControlGetText, filename, Edit1, 添加到压缩包
    SplitPath, filename,,, ext, name_no_ext
    Send %name_no_ext%_%A_YYYY%%A_MM%%A_DD%_%A_Hour%%A_Min%%A_Sec%.%ext%
    Sleep 500
    SetControlDelay -1
    ControlClick, Button14, 添加到压缩包
    Gui Destroy
    SetTimer, 7z
Return
2 Likes

啊哈哈哈这个点个赞

加个 gif 说明
screenshots

谢谢青蛙,算是人生写的第一个程序了,以前只写过几个简单的批处理

1 Like