#windows-10 #autohotkey
Вопрос:
TLDR; Я пытаюсь найти эквивалент bash $@
в autohotkey
Я разрабатываю скрипт автоответчика, который будет запускать определенную программу при запуске.
<^#i::Run D:Scriptsmyprog.exe "arg_1" "arg_2"
; Runs with whatever arguments I provide on pressing Ctrl Win I
Я хочу, чтобы программа запускалась с определенными аргументами командной строки, которые я предоставляю при запуске сценария.
> ahk_prog.exe arg_1 arg_2
Я в основном хочу иметь возможность конвертировать свои аргументы командной строки, предоставленные при запуске программы, чтобы иметь возможность запускать команду Run каждый раз, когда я ее запускаю.
Я попробовал это:
<^#i::Run D:Scriptsmyprog.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:Scriptsmyprog.exe "%*%" ; Trying Batch Like syntax since %1% and %2% are valid
; Runs with whatever arguments I provide on pressing Ctrl Win I
Оба они не работают. Есть ли способ сделать это?
Ответ №1:
A_Args
(документы) — это массив, поэтому вам придется объединить его в строку.
Например:
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:Scriptsmyprog.exe " arg_list
Также можно было бы сделать как однострочный, например так:
<^#i::Run, % "D:Scriptsmyprog.exe " RTrim(Format(StrReplace(Format("{:0" A_Args.length() "}", ""), 0, """{}"" "), A_Args*))