【问题标题】:Expand Command Line Arguments Autohotkey展开命令行参数自动热键
【发布时间】:2021-11-14 11:41:47
【问题描述】:

TLDR;我正在尝试在 autohotkey 中找到与 bash $@ 等效的方法

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

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

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

&gt; 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 

它们都不起作用。有没有办法做到这一点?

【问题讨论】:

    标签: windows-10 autohotkey


    【解决方案1】:

    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*))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 2012-11-16
      相关资源
      最近更新 更多