文字が" "で囲まれているときのルール

この TRR のスクリプト上では、文字が " " で囲まれている時は特別なルールで扱われる事になります。

その特別なルールは、実行する内容でルールに違いがあります。

大体4パターンに分かれます

  1. 文字列の場合
  2. 規定のコマンドの場合
  3. ファイルパスで実行時
  4. AHKコマンドの場合

1.文字列の場合

varName1  :=  "文字列"
function( "文字列" )
などのパターンです。

% %# # で囲まれた文字は textOut されず、そのままの状態です。

&&&>>><<< の文字を特別な文字として扱いません。そのままの状態です。

`n の文字は改行に変換

`n の文字は改行に変換します。

AHK と違い、 TRR では通常、 `n`r などのエスケープされている文字は変換されず、
ただの `n`r の文字としてだけ扱われます。

補足

エスケープ文字を使う場合は
Transform,  varName2,  Deref,  %varName1%
または
varName2  :=  F_transformDeref( varName1 )
を使って変換する必要があります。

ですが、今回の様に " " で囲んだ文字列として扱う場合は、
`r`n のみ、
CRの改行、LFの改行に変換されます。

他の `t などのエスケープされている文字は変換されません。

あくまで、 " " で囲まれている文字列の場合にその変換をするだけなので
varName1  :=  "一行`n二行`n"
は改行に変換されても、
varName1  =  一行`n二行`n
は改行に変換されません。

2.規定のコマンドの場合

&outArgsTestType6  "文字列1"

規定のコマンドの場合 " " で囲まれた文字は以下のルールで扱われます。

2.1

引数は半角スペースで分割されません。

" " で囲まれた部分以外のスペースが引数の区切り扱いになります。

2.2

% %# # で囲まれた文字は textOut されず、そのままです。

2.3

&&&>>><<< の文字を特別な文字として扱いません。

2.4

両端の " " は削除されます。

ただし、 「引数を,で区切るルール」を使用して、
, で区切った場合は、両端の " " は削除しません。

少しマニアックな事

現時点の使用では、
「引数を,で区切るルール」を使用した場合、
% %# # で囲まれた文字は、 " " で囲まれていても textOut で値が展開されるようになっています。

&outArgsTestType6
を使えば確認をしやすいと思います。

&outArgsTestType6  "文字列1"  "文字列2"
などで、規定のコマンドにどのような形で引数が渡されるか確認できます。

3.ファイルパスで実行時

ファイルパスから実行する場合の " " で囲まれた文字のルールです。

"%programFiles%\sakura\sakura.exe"  "%programFiles%\AutoHotkey_Lw\readme.txt"  <"%programFiles%\sakura">

この場合、ファイルパスと引数とで処理が違います。

3.1

実行ファイルパス・作業フォルダ

% %# # で囲まれていたら、 textOut して展開します。

当然、両端の " " を取り除いたファイルパスを実行します。

3.2

引数

% %# # で囲まれていたら、 textOut して展開します。

両端の " " は削除されず、そのままです。

アイテム の種類がソフト・ファイルやフォルダの
アイテム を実行した時も、同じ動作になります。

後、 &&&>>><<< の文字を特別な文字として扱いません。

&&&>>> の文字を " " で囲んで使う機会は無いと思いますが。

4.AHKコマンドの場合

Run, "%programFiles%\sakura\sakura.exe"  "%programFiles%\AutoHotkey_Lw\readme.txt" , %programFiles%\sakura

" " は、だだの " " の文字として扱われます。

% %# # で囲まれた文字は textOut して、展開します。

諸注意

AHKRun コマンドは、作業フォルダが " " で囲まれていた場合は、フォルダのパスとして認識できなくなります。

後、 &&&>>><<< の文字を特別な文字として扱いません。

&&&>>> の文字を " " で囲んで使う機会は無いと思いますが。