上一主题: 访问操作系统下一主题: 运行脚本


使用 OSRedirect 类

调用子命令时,AutoShell 使用预定义的 OSRedirect 类进行输出重定向。 要重定向输出并捕获子进程返回代码,请创建 OSRedirect 对象,并在使用可选 -output 子句的命令调用中传递此对象:

out = new OSRedirect();
! dir –output out

当您在 AutoShell 控制台中交互执行该命令时,它不在控制台中显示任何信息。 它将输出重定向到指定的对象。 完成之后,您可以在指定的对象上调用一系列方法,以获得有关命令执行的信息:

? "Error occurred during command execution:", out.errorOccurred()
? "Did command complete:", out.hasCompleted()
? "Output produced by command:", out.output()
? "Command return code (errorlevel):", out.result()

方法 output() 和 result() 会返回必需的信息。 output() 方法可返回带有完整目录清单的字符串。 您可以使用标准 JavaScript 字符串函数来进一步处理该输出。 例如,将行解析为阵列,并逐行显示它们:

lines=out.output().split("\n");
for(i=0;i<lines.length;i++)qout(lines[i]);

如果要使用 ! AutoShell 命令调用 dir 操作系统命令, 则先分配 OSRedirect 对象,然后再发出 ! 相匹配。 要保存该步骤,您也可以使用 !! 命令调用 OS 相匹配。 !! 命令会创建 OSRedirect 对象并将其分配给指定的变量(如果该对象不存在)。

即使没有明确分配 OSRedirect 对象,以下命令也会将当前目录清单输出到变量 out 中:

!! dir -output out

如果发出 不带可选 -output 子句的 !! 命令,则它会自动将目录信息写入到变量 $$stdout 中:

!! dir
? $$stdout.output()