引数を,で区切るルール

TextRunRun には特別なルールとして、
引数1, なら、
スペースではなく , が引数の区切り文字になるというルールがあります。

&newItemFromCommand  1  sakuraEdit  %A_ScriptDir%\..\sakura\sakura.exe
&newItemFromCommand  ,  1 , sakuraEdit  ,  %A_ScriptDir%\..\sakura\sakura.exe

上の2つの例は同じ処理になります。

引数1
スペース  ,  スペース
であることが条件です。

他にもいくつか条件があります。

規定のコマンドの場合

辞書 の種類でしか説明していない事ですが、規定のコマンドには 7 種類のタイプがあります。
その種類の、タイプ 6 のみ、 この「引数を,で区切るルール」 が適用されます。

どの規定のコマンドがどのタイプに属するかは
このホームページの辞書のページで確認しない限り分かるようにはなっていません。

&outArgsTestType6 の規定のコマンドを使うと
引数がどのような形で「タイプ6の規定のコマンド」に引き渡されるかを確認できます。

先ほどあげた、例の
&newItemFromCommand&outArgsTestType6 に変えて

&outArgsTestType6  1  sakuraEdit  %A_ScriptDir%\..\sakura\sakura.exe

&outArgsTestType6 , 1 ,  sakuraEdit ,  %A_ScriptDir%\..\sakura\sakura.exe

を試すと同じ引数で処理されている事が確認できると思います。

アイテムの場合

アイテムの実行時の引数にも、 引数を,で区切るルール が適用されます。

ただしこれも条件があり、
%1 などの %[数字] を使用している場合と、
B_itemArg1 などの変数をスクリプト内で使用している場合に限ります。

%1 などの %[数字] を使用している場合

%1 などをアイテムの引数に記入していた場合に 種類がスクリプトなら、リンク先に
引数を,で区切るルール が使用されます。

先ほども説明した様に、
引数1スペース  ,  スペース の場合、 , を引数の区切り文字として認識します。

補足

%∗ のみを記入していた場合もこのルールは使用できます。

ですので,の文字が取り除かれた状態で引数が渡されます。

%∗ のみを記入していた場合は , で区切る必要はないと思いますが。

これも、どのように動作するかは、
Alt+o で確認するとよいと思います。

%1 などの意味は別のページで説明しています。

引数を指定の位置に配置する

B_itemArg1などの変数を使用している場合

B_itemArg1 などの意味は別のページで説明しています。

B_itemが先頭にある名前の変数

B_itemArg1 などを 二行以上のアイテム のスクリプトに記入していた場合に
引数を,で区切るルール が使用されます。

B_itemArg1 には,で区切った引数1
B_itemArg2 には,で区切った引数2
が値として代入されます。

B_itemArg0 には、引数の数が代入される仕様になっています。
そして B_itemArg0 にも、引数の数は , で区切った事を考慮して代入しますが、
10を超えても、その数が代入されてしまいます。

B_itemArg9 までしか存在しない事は考慮しません。

B_itemArgAll ですが、
引数を,で区切るルール は考慮しません。

よって、,の文字はそのままになっている引数が代入されてしまいます。

B_itemArg1などを使う場合は、%--を使う

B_itemArg1 などの変数ですが、この変数を記述したスクリプトでも、
「実行もとの引数」は「スクリプトの後に続く引数」になることに注意してください。

%--アイテムのスクリプトの最後に記述することで、対処します。

さて、スクリプトの後に続く引数になる場合は、
引数を,で区切るルール が使用されません。

その部分は、,の文字はそのままになっている引数が追加されます。

つまり、先ほど説明した、 %1 などがないかぎり、
引数を,で区切るルール は使用されません。

もっとも、%-- を記入しているなら、「スクリプトの後に続く引数」にならないので気にすることはありません。

動作の確認方法

B_itemArg1 の変数が , で正しく区切られているかどうかですが、
%1 などを使った場合と違い、
Alt+o を使っての確認ができません。

いまのところ、スクリプト内に

F_output( "B_itemArg1 " . B_itemArg1 . "`nB_itemArg2 " . B_itemArg2 )

などを記述して値を確認するしかありません。

当然、確認した後はこの F_output() の記述を削除する手間がかかります。

空白で区切る場合との違い

あまり細かい事は「マニアックな説明」で書こうと思いますが、
空白で区切る場合、 " " で囲まれている半角スペースは、区切り文字として扱わない。という仕様になっています。

そのケースと違い、 引数を,で区切るルール では、
," " で囲まれていても、区切り文字として扱います。