扩展命令行参数 Autohotkey

Expand Command Line Arguments Autohotkey

TLDR;我试图在 autohotkey

中找到等同于 bash $@

我正在开发一个自动热键脚本,它会在触发时 运行 一个特定的程序。

<^#i::Run D:\Scripts\myprog.exe "arg_1" "arg_2"
; Runs with whatever arguments I provide on pressing Ctrl + Win + I 

我希望程序以特定的命令行参数启动;我在启动脚本时提供的。

> ahk_prog.exe arg_1 arg_2

我基本上希望能够将启动程序期间提供的命令行参数转换为能够在每次触发它时 运行 运行 命令。

我试过这个:

<^#i::Run D:\Scripts\myprog.exe %A_Args% ; A_Args is the array of CLI arguments 
; Runs with whatever arguments I provide on pressing Ctrl + Win + I 

这个我也试过了(这个根本编译不出来)

<^#i::Run D:\Scripts\myprog.exe "%*%" ; Trying Batch Like syntax since %1% and %2% are valid 
; Runs with whatever arguments I provide on pressing Ctrl + Win + I 

两者都不行。有办法吗?

A_Args(docs)是一个数组,所以你需要将它连接成一个字符串。
例如:

for each, arg in A_Args
    arg_list .= """" arg """ "

arg_list := RTrim(arg_list) ;trim trailing space (might be unnecessary)
MsgBox, % arg_list

在论点周围添加了引号,因为如果您的论点中有空格,当然需要它们。
然后你可以像这样将它添加到你的 Run 命令中:

for each, arg in A_Args
    arg_list .= """" arg """ "

arg_list := RTrim(arg_list) ;trim trailing space (might be unnecesary)

<^#i::Run, % "D:\Scripts\myprog.exe " arg_list

也可以这样单行完成:

<^#i::Run, % "D:\Scripts\myprog.exe " RTrim(Format(StrReplace(Format("{:0" A_Args.length() "}", ""), 0, """{}"" "), A_Args*))