如何从Extendscript中调用python或shell脚本?

时间:2013-01-20 22:58:59

标签: adobe photoshop adobe-illustrator extendscript adobe-premiere

我有一个需要在Extendscript脚本中调用的python脚本。是否有可以执行此操作的库函数?我尝试在文档和许多其他在线资源中找到解决方案但到目前为止我没有任何工作。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:4)

看看this example 它在脚本文件旁边创建一个.term文件并执行它。

这是一个清洁版本:

main();
function main() {
  var script_file = File($.fileName); // get the full path of the script
  var script_folder = script_file.path; // get the path from that
  var new_termfile = createTermFile("execute_something", script_folder);
  new_termfile.execute(); // now execute the termfile
}
/**
 * creates a .term file
 * @param  {String} term_file_name --> the name for the .term file
 * @param  {Strin} path --> the path to the script file
 * @return {File}                the created termfile
 */
function createTermFile(term_file_name, path) {
/*
http://docstore.mik.ua/orelly/unix3/mac/ch01_03.htm
1.3.1.1. .term files
You can launch a customized Terminal window from the command line by saving some prototypical Terminal settings to a .term file,
then using the open command to launch the .term file (see "open" in Section 1.5.4, later in this chapter).
You should save the .term file someplace where you can find it later, such as ~/bin or ~/Documents.
If you save it in ~/Library/Application Support/Terminal, the .term file will show up in Terminal's File  Library menu.
To create a .term file, open a new Terminal window, and then open the Inspector (File  Show Info, or -I)
and set the desired attributes, such as window size, fonts, and colors. When the Terminal's attributes
have been set, save the Terminal session (File Save, or -S) to a .term file (for example, ~/Documents/proto.term).
Now, any time you want to launch a Terminal window from the command line, you can issue the following command:
 */
  var termfile = new File(path + "/" + term_file_name + ".term");
  termfile.open("w");
  termfile.writeln(
      "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
      "<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"" +
      "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n" +
      "<plist version=\"1.0\">\n" +
      "<dict>\n" +
      "<key>WindowSettings</key>\n" +
      "<array>\n" +
      " <dict>\n" +
      "<key>CustomTitle</key>\n" +
      "<string>My first termfile</string>\n" +
      "<key>ExecutionString</key>\n" +
      "<string>python\nprint \"Hello World\"\nexit()</string>\n" +
      "</dict>\n" +
      "</array>\n" +
      "</dict>\n" +
      "</plist>\n");
  termfile.close();
  return termfile;
};

答案 1 :(得分:4)

ExtendScript File对象有一个execute()方法,如Fabian所示。 我不知道.term文件,而是使用.command文件,这是一个普通的shell脚本而不是XML。

如果在InDesign中运行,您可以绕过Terminal.app并使用AppleScript:

myScript = 'do shell script "diff f1 f2 > o" ';
app.doScript(myScript, ScriptLanguage.applescriptLanguage);