Как вызвать python или оболочку script из Extendscript?

У меня есть python script, который должен быть вызван из Extendscript script. Есть ли доступная функция библиотеки, которая может это сделать? Я попытался найти решение в документации и многих других онлайн-ресурсах, но пока ничего не работало для меня. Любая помощь приветствуется.

2 ответа

У объектов ExtendScript File есть метод execute(), как уже показано Fabian. Я не знал о .term файлах и вместо этого использовал бы файл .command, который представляет собой обычную оболочку script, а не XML.

Если вы работаете в InDesign, вы можете обойти Terminal.app и использовать AppleScript:

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


Посмотрите этот пример. Он создает . Term файл рядом с файлом script и выполняет его.

Это очищенная версия:

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 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 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" +
 "\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;
};

licensed under cc by-sa 3.0 with attribution.