调用子命令时,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()
版权所有 © 2013 CA。
保留所有权利。
|
|