Ich habe ein Python-Skript, das aus einem Extendscript-Skript aufgerufen werden muss. Gibt es eine Bibliotheksfunktion, die das kann? Ich habe versucht, eine Lösung in der Dokumentation und vielen anderen Online-Ressourcen zu finden, aber bisher hat nichts für mich funktioniert. Jede Hilfe wird geschätzt.So rufen Sie ein Python oder Shell-Skript aus Extendscript heraus auf?
7
A
Antwort
3
Werfen Sie einen Blick auf this example.
Es erstellt eine .term Datei neben der Skriptdatei und führt sie aus.
Dies ist eine gereinigte Version:
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;
};
4
ExtendScript Datei-Objekte haben eine Methode execute(), wie bereits von Fabian gezeigt. Ich wusste nichts über .term-Dateien und hätte stattdessen eine .command-Datei verwendet, das ist ein einfaches Shell-Skript anstelle von XML.
Wenn innerhalb von InDesign läuft, können Sie Terminal.app umgehen und Applescript verwenden:
myScript = 'do shell script "diff f1 f2 > o" ';
app.doScript(myScript, ScriptLanguage.applescriptLanguage);
Verwandte Themen
- 1. So rufen Sie einen Web-Service aus einem Webservice heraus
- 2. So rufen Sie ein Fragment auf oder rufen es auf, wenn Sie auf klicken.
- 3. So rufen Sie ein Bool auf Knopfdruck
- 4. So rufen Sie ein Array auf?
- 5. Lithium: So rufen Sie einen Validierungsfilter von innen heraus
- 6. So rufen Sie Monitor.TryEnter auf
- 7. So rufen Sie ein externes Programm mit Parametern auf?
- 8. So rufen Sie Variablen aus einem importierten parameterabhängigen Skript auf?
- 9. So rufen Sie eine verschachtelte Niveaustufe in Python auf?
- 10. So rufen Sie eine Aktivität aus einer Vorzugsaktivität auf?
- 11. So rufen Sie Soap API mit Python
- 12. So rufen Sie die Fragmentmethode aus der Hauptaktivität auf
- 13. So rufen Sie den ausgewählten Text aus dem aktiven Fenster
- 14. Rufen Sie Node.js (oder Python) von Perl
- 15. So rufen Sie eine Funktion aus der kendoListView-Vorlage auf
- 16. So rufen Sie C# -Bibliotheken aus Excel auf?
- 17. So rufen Sie Wert aus dem Webformular auf?
- 18. So rufen Sie Überladungsfunktionen aus der Basisklasse auf (nicht abstrakt)?
- 19. So rufen Sie eine Dart-Funktion aus Javascript auf?
- 20. So rufen Sie ein Schaltflächenklickereignis von einer anderen Methode auf
- 21. So rufen Sie Attribute in Python 3.1 auf - einfach
- 22. So rufen Sie den Hintergrundthread auf
- 23. So rufen Sie Factory-Methoden aus HTML in angularjs auf?
- 24. So rufen Sie eine Zeichenfolge aus res string.xml auf?
- 25. So rufen Sie die CORBA-Schnittstelle von C# aus auf?
- 26. So rufen Sie Path.Combine von MSBuild auf?
- 27. So rufen Sie JavaScript in XML auf?
- 28. Easy68k: So rufen Sie ein Makro in der Montage auf?
- 29. So rufen Sie eine Vorlagenmethode auf?
- 30. So rufen Sie ein Befehlszeilenprogramm in WiX
Ja die .command Datei ist viel kühler als die ausführliche .term-Datei! (Kannte sie nicht) Einzige Sache ist, dass Sie es ausführbar machen müssen. Die Datei .term wird sofort ausgeführt – fabianmoronzirfas