前のトピック: リモートバッチ モード次のトピック: コンソール(標準出力)へのデータの書き込み


文字列化

文字列化は、文字のシーケンスを受け取り、JavaScript リテラル文字列に変換します。 たとえば、AutoShell の get-help コマンドは、オプションのパラメータとしてフィルタ文字列を受け取ります。

get-help help

AutoShell は標準装備の JavaScript インタープリタを使用しているため、プロンプトまたはスクリプト ファイルで指定されたコマンドは、有効な JavaScript 構文に変換されます。 AutoShell のコマンド変換レイヤは、コマンドを JavaScript 関数呼び出しに変換します。

help( "help" );

JavaScript 内のリテラル文字列は、常に引用符で囲む必要があります。そのため、コマンド変換レイヤはコマンドで指定された文字列の前後に引用符を自動的に配置します。 引用符が文字列の前後にある場合、文字列化は行われません。

JavaScript のリテラル文字列では、特殊文字をエスケープする必要があります。 特に、引用区切りの文字列内の円記号と引用符には注意してください。 エスケープするには、これらの特殊文字の前に円記号を付けます。 AutoShell dir コマンド(1)の関数呼び出し(2)への変換について考えてみましょう。

(1) dir c:¥Program Files¥CA¥*.*
(2) ca.aip.direct.directory("c:¥¥Program Files¥¥CA¥¥*.*" ,"",false,false, false, false);

スペースが含まれている文字列や 1 つのオプションに複数の入力パラメータが指定されている文字列を処理する場合、引用符が必要な場合があります。 スペースが含まれている文字列を引用符なしで指定した場合、すべての入力パラメータが照合されるまで、スペースは引数の区切りとして解釈されます。 この動作を防ぐには、引用符を使用します。

引用符のないコマンドを使用する(1)代わりに、円記号をエスケープしてパスを引用符で囲み、AutoShell が正しく引数を識別できるようにします(2)。

(1) copy c:¥Program Files¥CA¥*.* c:¥temp
(2) copy "c:¥¥Program Files¥¥CA¥¥*.*" c:¥temp

注: コマンド変換レイヤはパスを文字列化しないため、文字列内の特殊文字は手動でエスケープする必要があります。

スペースを含む文字列をまとめて、特殊文字の自動エスケープを行うには、_S() マクロも使用できます。

copy _S(c:¥Program Files¥CA¥*.*) c:¥temp

AutoShell コマンドを使用してタスクを自動化する場合、コマンドの一部で JavaScript 変数からの入力を受け取る必要がある場合が少なくありません。 この場合は、文字列化が行われないようにします。 文字列化が行われると、変数名がリテラル文字列に変換されます。また、コマンドは予期された結果を生成しません。 式の文字列化を防ぐには、丸かっこの中に式を入れます。

var topic = "help";
get-help (topic)