You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AutoHotkey文本片段中正确引用变量

热字符串后直接跟括号块的写法属于字面量替换模式,不会自动解析块内%包裹的变量,这是你之前代码报错、不生效的核心原因。
下面两种可直接运行的实现方案,完全适配你在文本片段内嵌入动态/自定义内容的需求:

  • 方案1:轻量动态拼接,适合嵌入内容简单的场景
    用SendInput承载要发送的文本块,SendInput支持的延续文本格式会自动解析块内的变量,不需要额外做替换处理,示例代码:
; 输入emailsignature触发自动展开
:*:emailsignature::
; 自定义要插入的动态内容,可按需修改规则
dateWithText := "*** " . A_YYYY . "-" . A_MM . "-" . A_DD . " 当日发送标注 ***"
SendInput,
(
Best regards,
Your Name
%dateWithText%
Job Title | Contact Info
)
return
  • 方案2:模板占位替换,适合嵌入片段需要多场景复用的场景
    先写好完整文本模板,用自定义占位符标记插入位置,替换成实际内容后统一发送,还可以搭配函数实现跨片段复用的公共子块,示例代码:
; 定义可复用的日期片段,其他文本展开规则都可以调用
getDateText() {
    return "*** 发送日期:" . A_YYYY . "年" . A_MM . "月" . A_DD . "日 ***"
}

:*:emailsignature::
; 编写签名模板,用{{date}}标记内容插入位置
signTemplate := "
(
Best regards,
Your Name
{{date}}
Job Title | Contact Info
)"
; 替换占位符为实际内容
finalText := StrReplace(signTemplate, "{{date}}", getDateText())
; 发送最终展开的内容
SendInput %finalText%
return

如果需要在展开过程中临时输入自定义内容,只需要在对应插入位置加一步输入捕获即可,比如下面的代码会在展开到中间位置时弹出输入框,填入内容确认后会自动补全剩余的签名部分:

:*:emailsignature::
SendInput,
(
Best regards,
Your Name
)
; 弹出输入框收集临时补充内容
InputBox, customAddon, 输入临时补充内容, , 320, 120
SendInput %customAddon%
SendInput,
(
Job Title | Contact Info
)
return

内容的提问来源于stack exchange,提问作者georg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:06:28