吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2973|回复: 13
收起左侧

[其他原创] AutoHotkey制作新建文本文档的快捷键

[复制链接]
sh1j1 发表于 2025-4-21 15:40
本帖最后由 sh1j1 于 2025-5-7 18:48 编辑

windows没有新建文本文档的快捷方式,反复新建很麻烦
上网没找到解决方式
询问gpt,他给出使用AutoHotkey编辑AHK脚本来实现快捷键功能

编辑AHK脚本

安装AutoHotkey后,右键桌面 → 新建 → AutoHotkey Script → 起个名字
以下是反复调试后能用的脚本,绑定在ctrl+alt+n快捷键

; 按下Ctrl+Alt+N创建新文本文件(无选中操作)
^!n::
    targetPath := ""

    ; 获取资源管理器当前路径
    if WinActive("ahk_class CabinetWClass") || WinActive("ahk_class ExploreWClass") {
        targetPath := GetActiveExplorerPath()
        if (targetPath = "") {
            targetPath := A_Desktop  ; 回退到桌面
        }
    } else {
        targetPath := A_Desktop      ; 非资源管理器窗口使用桌面
    }

    ; 规范路径格式
    targetPath := RTrim(targetPath, "\") . "\"

    ; 生成唯一文件名
    Loop {
        newFile := targetPath "新建文本文件" (A_Index = 1 ? "" : " " A_Index) ".txt"
        if !FileExist(newFile)
            break
    }

    ; 静默创建文件
    try {
        FileAppend, , %newFile%
    } catch {
        MsgBox 文件创建失败,请检查路径权限
    }
return

; 辅助函数:获取当前资源管理器路径
GetActiveExplorerPath() {
    hwnd := WinExist("A")
    for window in ComObjCreate("Shell.Application").Windows {
        try {
            if (window.HWND == hwnd) {
                return window.Document.Folder.Self.Path
            }
        }
    }
    return ""
}

设置脚本开机自启(可选)

  • 按 Win + R 输入 shell:startup,打开启动文件夹
  • 把你写的 .ahk 文件快捷方式放进去即可,系统每次启动自动加载脚本

实现效果
1.gif

任意文件快捷方式

感谢评论区大佬指教,增加了输入框,可自定义任意文件,批量创建文件还是用bat脚本比较好

^!n::
    targetPath := ""

    ; 获取资源管理器当前路径
    if WinActive("ahk_class CabinetWClass") || WinActive("ahk_class ExploreWClass") {
        targetPath := GetActiveExplorerPath()
        if (targetPath = "")
            targetPath := A_Desktop
    } else {
        targetPath := A_Desktop
    }

    targetPath := RTrim(targetPath, "\") . "\"

    ; 弹出输入框,默认是“新建文件.txt”
    defaultName := "新建文件.txt"
    InputBox, userInput, 新建文件, 请输入文件名(可带扩展名):, , 300, 130,,, , %defaultName%
    if ErrorLevel || userInput = ""
        return

    ; 检查是否存在同名文件,自动编号
    Loop {
        newFile := targetPath . userInput
        if (A_Index > 1) {
            SplitPath, userInput, name, dir, ext, nameNoExt
            if (ext = "")
                newFile := targetPath . nameNoExt . " " . A_Index
            else
                newFile := targetPath . nameNoExt . " " . A_Index . "." . ext
        }
        if !FileExist(newFile)
            break
    }

    ; 创建文件
    try {
        FileAppend, , %newFile%
    } catch {
        MsgBox 文件创建失败,请检查路径权限
    }
return

; 获取当前资源管理器路径
GetActiveExplorerPath() {
    hwnd := WinExist("A")
    for window in ComObjCreate("Shell.Application").Windows {
        try {
            if (window.HWND == hwnd)
                return window.Document.Folder.Self.Path
        }
    }
    return ""
}

屏幕截图 2025-05-07 184438.png

help

官方帮助文档

英文:Quick Reference | AutoHotkey v2

社区翻译版

中文翻译:快速参考 | AutoHotkey v2

免费评分

参与人数 3吾爱币 +5 热心值 +3 收起 理由
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
kmcbest + 1 + 1 我很赞同!
grrr_zhao + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

pub 发表于 2025-7-5 22:30
用豆包写一个批处理,创建一个文本文件,打开加入下面的代码,保存关闭,
改变文件后缀名为 .bat ,  把这个批处理文件放在哪里执行,就会产生 99个 文件.
改一下编码就通用了.

@echo off
setlocal enabledelayedexpansion

for /L %%i in (1,1,99) do (
    if %%i LSS 10 (
        set filename=name_0%%i.txt
    ) else (
        set filename=name_%%i.txt
    )
    type nul > !filename!
    echo 创建了空文件: !filename!
)

echo 已成功创建所有空文件。
pause   




解释:
基础设置
batch
@echo off
setlocal enabledelayedexpansion
@echo off:它的作用是关闭命令回显,这样在脚本执行过程中,命令行就不会显示具体执行的命令,使输出更加简洁。
setlocal enabledelayedexpansion:开启延迟环境变量扩展。在批处理的循环里,变量是在整个代码块执行前就被解析的,要是没有开启延迟扩展,就无法在循环内部正确获取变量的最新值。
循环控制
batch
for /L %%i in (1,1,99) do (
for /L:这是批处理中用于数值循环的命令。
%%i:这是循环变量,在批处理脚本里需要使用两个百分号。
(1,1,99):表示循环从 1 开始,每次递增 1,直到 99 结束。
文件名格式化
batch
    if %%i LSS 10 (
        set filename=name_0%%i.txt
    ) else (
        set filename=name_%%i.txt
    )
LSS:在批处理中是 “小于” 的意思。
当循环变量的值小于 10 时,会在前面补 0,比如生成 name_01.txt;当值大于等于 10 时,则直接使用原数值,像 name_10.txt。
创建空文件
batch
    type nul > !filename!
    echo 创建了空文件: !filename!
type nul > filename:这是批处理里创建 0 字节空文件的经典方法。nul是 Windows 系统的空设备,把它的内容输出到文件,就相当于创建了一个空文件。
!filename!:因为开启了延迟扩展,所以这里使用感叹号来引用变量,这样就能获取到循环内部变量的最新值。
收尾工作
batch
echo 已成功创建所有空文件。
pause

echo:用于在命令行显示提示信息。
pause:会让脚本暂停执行,等待用户按下任意键后才继续,这样可以使用户有时间查看输出结果。
总结:这个脚本借助循环和条件判断,生成了 99 个格式规范的文件名,然后创建对应的空文件,最后还提供了友好的提示信息。

冒个泡 发表于 2025-4-22 08:24
楼主第一句说的”windows没有新建文本文档的快捷方式,反复新建很麻烦“
没别的意思就是纯好奇哈,这个需求的使用场景是啥
superjason 发表于 2025-4-21 22:28
wyesheng 发表于 2025-4-22 01:08
superjason 发表于 2025-4-21 22:28
ahk可以编译成可执行exe吗

我记得应该是可以,借助Macro Creator。
zhanglei1371 发表于 2025-4-22 07:35
superjason 发表于 2025-4-21 22:28
ahk可以编译成可执行exe吗

非常容易,一步右键瞬间完成
abCdeU 发表于 2025-4-22 08:30
重复的事交给电脑做
冥界3大法王 发表于 2025-4-22 08:59
@sh1j1
你 把最后的.txt 换成InputBox,任意扩展名不就都能快建了。。。
zlqhysy 发表于 2025-4-22 09:28
听说ahk与au3同族
rza1314 发表于 2025-4-22 18:02
ahk这是个神器,很好用,我写游戏脚本都用他。很多语言的按键模拟会被游戏屏蔽,它不会。
52pojieluntan 发表于 2025-5-6 14:09
挺好的,一开始以为没成功,结果新建的文本文件都在桌面上
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-10-22 18:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表