PDA

Vollständige Version anzeigen : ScriptFu Konsole im Batch-modus unter Windows


plexynote
07.06.2011, 14:55
Hallo, habe eine Gimp-Script, welches unter Windows im Batch-Modus die Konsole ansprechen soll:

Batch-Datei:

gimp-console-2.6.exe -i -f -d -b "(reno_uebersichtsbild 2)" -b "(gimp-quit 0)"


Soweit funktioniert alles. Der Bildpfad wird hier noch direkt im Script definiert.

Jetzt möchte ich aber den Bildpfad über den Batch-Aufruf übergeben (Bildpfad-Parameter wird natürlich in der Funktionsdefinition im Skript zusätzlich angegeben):

gimp-console-2.6.exe -i -f -d -b "(reno_uebersichtsbild 2 'C:\bildpfad\bild.png' )" -b "(gimp-quit 0)"


Hier bricht das DOS-Fenster mit einer Fehlermeldung ab. Alles Austauschen der Anführungszeichen mit Hochkommata führt zu keinem Erfolg - zB. so:

gimp-console-2.6.exe -i -f -d -b '(reno_uebersichtsbild 2 "C:\bildpfad\bild.png" )' -b "(gimp-quit 0)"


hier versucht er, irgendein Verzeichnis zu öffnen, das es gar nicht gibt.

Kann mir jemand sagen, wie man in einem Batch-Aufruf unter WinXP vernünftig einen Bildpfad übergibt?

meimaddin
28.03.2012, 11:55
Hallo plexynote,

bin heute zufällig auf der Suche nach der Lösung eines anderen Problems auf Deine Frage gestossen. Die Antwort kommt für Dich leider etwas spät, aber vielleicht nützt sie ja jemandem anderen.

Das Problem sind die Backslashes '\', die in Windows für den Pfad verwendet werden. In der UNIX- und C- Umgebung wird der Backslash aber als Fluchtzeichen für Sonderzeichen in Strings verwendet. Das Zeichen nach dem Backslash hat eine Sonderbedeutung:

\n = Neue Zeile
\r = Wagenrücklauf
\b = Backspace
\t = Tab

Wenn der Kommandostring von GIMP durch die Text-Mühle gedreht worden ist, sind die einzelnen Backslashes zusammen mit ihrem unmittelbaren Nachfolger in Sonderzeichen gewandelt oder, wenn man Glück hat und keine Sonderbedeutung gefunden wurde, durch das nachfolgende Zeichen ersetzt - aber die Slashes sind weg.

Wenn du mit Textkonstanten arbeitest, ist die Abhilfe, die Slashes doppelt einzugeben:

gimp-console-2.6.exe -i -f -d -b "(reno_uebersichtsbild 2 'C:\\bildpfad\\bild.png' )" -b "(gimp-quit 0)"

Was aber leider nicht funktioniert ist so eine Substitution aus einer Windows Batch-Datei:


gimp-console-2.6.exe -i -f -d -b "(reno_uebersichtsbild 2 '%1' )" -b "(gimp-quit 0)"

Hoffe, das erhellt ...

meimaddin