AutoHotkey中查找类似bash $@的命令行参数展开实现方法
解决方案
AutoHotkey没有内置类似bash$@的直接展开语法,需要先在脚本启动时把命令行参数预处理成符合规则的拼接字符串,再传给Run命令即可实现需求。
AHK v2 实现(你代码中用到的A_Args为v2内置变量)
先在脚本最顶部的自动执行段加入参数预处理逻辑:
; 全局存储预处理后的参数字符串 global runArgs := "" for _, arg in A_Args { ; 每个参数包裹双引号,参数内部的双引号转义为两个双引号,避免解析错误 runArgs .= '"' StrReplace(arg, '"', '""') '" ' }
热键写法直接调用预处理好的变量即可:
<^#i::Run D:\Scripts\myprog.exe %runArgs%
AHK v1 实现
如果你使用的是AHK v1版本,预处理逻辑写法如下:
global runArgs := "" Loop %0% { arg := %A_Index% runArgs .= '"' StrReplace(arg, '"', '""') '" ' }
热键写法和v2一致。
原写法失效原因说明
- 直接使用
%A_Args%:A_Args是数组对象,无法在字符串场景下自动展开为空格分隔的参数字符串,直接调用只会返回无效的对象标识。 - 尝试
%*%语法:AutoHotkey没有兼容批处理的%*语法,该写法不符合AHK语法规则,因此无法编译。
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

