选项 1(桥话)
我必须这样做才能从 Photoshop 和 Illustrator 运行外部 PNG 处理器。这些应用程序都不能从 ExtendScript 执行外部程序。(请参阅选项 2。)Adobe Bridge 的app
对象具有system
在系统 shell 中执行命令的方法。使用BridgeTalk
对象,您可以从 Illustrator 远程调用该方法。不过,您只会得到退出代码作为回报。因此,您需要将程序的输出重定向到一个文件,然后在脚本中读取该文件。
下面是一个使用BridgeTalk
Adobe Bridge 运行外部程序的示例:
var bt = new BridgeTalk();
bt.target = 'bridge';
bt.body = 'app.system("ping -c 1 google.com")';
bt.onResult = function (result) {
$.writeln(result.body);
};
bt.send();
优点
- 异步
- 可以轻松检索退出代码
- 可以使用shell语法并直接将参数传递给程序
缺点
- 必须安装 Adobe Bridge
- Adobe Bridge 必须正在运行(但如果需要,BridgeTalk 会为您启动它)
选项 2 (File.prototype.execute)
我后来发现了这一点,不敢相信我错过了。该类File
具有execute
打开或执行文件的实例方法。它可能适用于您的目的,尽管我自己没有尝试过。
优点
- 异步
- 内置于每个 ExtendScript 环境中(无进程间通信)
缺点
- 无法检索退出代码
- 无法使用 shell 语法或直接将参数传递给程序