上一主题: 远程批处理模式下一主题: 将数据写入控制台 (stdout)


字符串化

字符串化接受一连串字符并且将其转化为 JavaScript 文字串。 例如,AutoShell get-help 命令将筛选字符串作为可选参数:

get-help help

因为 AutoShell 使用开箱即用型 JavaScript 解释器,在提示符或脚本文件中输入的任何命令均被翻译成有效的 JavaScript 语法。 AutoShell 命令翻译层将该命令转化为 JavaScript 函数调用:

help( "help" );

JavaScript 中的文字串必须始终用引号括起来,因此命令翻译层会自动用引号括起命令中指定的字符串。 如果字符串用引号括起,则不会再对其进行字符串化。

必须对 JavaScript 文字串内的特殊字符进行转义。 尤其是引号分隔的字符串中的反斜杠和引号。 通过将反斜杠作为这些特殊字符的前缀完成转义。 可参考翻译为函数调用 (2) 的 Autoshell dir 命令 (1):

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

在处理一个选项中包含空格且采用多个输入参数的字符串时,可能需要使用引号。 如果未使用引号指定包含空格的字符串,则空格将被解释为参数分隔符,直到所有的输入参数匹配。 为了防止该行为,请使用引号。

不使用不带引号的命令 (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)