mehrere Scripte gleichzeitig ausführen?

Dominus

Mitglied
Thread Starter
Dabei seit
16.10.2009
Beiträge
25
Reaktionspunkte
2
Hi,
ich hab das Problem, daß wenn ich AppleScript benutze um ein Programm auszuführen, ich keine andere Scripte ausführen kann, solange das Program nicht geschlossen wurde.

Zum Beispiel
Code:
on run
	do shell script "WINEDEBUG=-all LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/X11R6/lib FONTCONFIG_FILE=/opt/local/etc/fonts/fonts.conf DYLD_FALLBACK_LIBRARY_PATH=/usr/X11/lib /opt/local/bin/wine ~/.wine/dosdevices/d:/totalcmd/totalcmd.exe"
end run

Erste wenn ich den TotalCommander/Wine schließe, kann ich andere Scripts ausführen. Gibt's da was, was ich im Script angeben muss, oder klappt das nur, wenn ich das Script als Programm speichere?
 
du musst das ganze im shell aufruf mit & machen, damit der shell job in den hintergrund gepackt wird.
sonst wartet applescript halt auf das ende vom shell script.
 
hmm, versteh ich das richtig, mit einem "tell application "terminal""?
Ich wollte eigentlich extra den Aufruf eines Terminal vermeiden.
 
nein, verstehst du nicht.
do shell script "befehl &"
 
ok, Danke, verstehe, ich hab das Script jetzt abgeändert zu
Code:
do shell script "WINEDEBUG=-all LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/X11R6/lib FONTCONFIG_FILE=/opt/local/etc/fonts/fonts.conf DYLD_FALLBACK_LIBRARY_PATH=/usr/X11/lib /opt/local/bin/wine ~/.wine/dosdevices/d:/totalcmd/totalcmd.exe &"
Aber das verhindert trotzdem noch das ausführen eines anderen Scripts, bevor ich Wine/Totalcommander beende.
 
das gleiche in grün, bloss das ausgeben von dem prozess ins nirvana geschickt werden...
ist wine so mitteilungsbedürftig, wenn es startet?
du kannst dann auch noch gleich ein 2>&1 mit dazu packen, damit auch keine fehlermeldungen das script aufhalten...
 
Yup, Wine ist so mitteilingsbedürftig. Ohne den redirect, wird AppleScriptRunner weiter ausgeführt und verhindert den Start von weiteren Skripten.
 
Hmm, was ist wenn ich so ein Script habe:

Code:
do shell script "/Users/dominus/Code/cvs/dosbox/src/dosbox -conf /users/dominus/documents/dosbox/" & optionen as string
(das ist nur ein Teil des Scripts, optionen werden vorher im Script gesammelt)
 
dann bastelst du dir halt den rest dahinter mit
Code:
 & " >/dev/null &"
 
das hatte ich schon versucht, aber das klappt nicht. AppleScript-Runner beendet sich nicht.

Aber wenn ich mich online umsehe, *sollte* das eigentlich klappen... komisch...
 
pack halt noch das erwähnte 2>&1 dazu ...
 
damit klappt's auch nicht.
Das ganze Script sieht übrigens so aus (vielleicht erklärt das wass)
Code:
set the_list to ""
set nl to ASCII character 10
tell application "Finder"
	set file_list to name of every file of folder "Macintosh HD:users:dominus:documents:dosbox" whose name ends with ".conf"
	repeat with entry in file_list
		set the_list to the_list & nl & entry
	end repeat
end tell
set optionen to (choose from list file_list with prompt "DOSBox spielt heute")
if optionen is not false then
	do shell script "/Users/dominus/Code/cvs/dosbox/src/dosbox -conf /users/dominus/documents/dosbox/" & optionen as string & " &> /dev/null 2>&1 &"
else if optionen is false then
	do shell script "/Users/dominus/Code/cvs/dosbox/src/dosbox &> /dev/null &"
end if
Funktion ist, daß es in einem Verzeichnis alle Konfigurationsdateien von Dosbox auflistet, und bei Auswahl eines davon, Dosbox mit dem Parameter "-conf /users/dominus/documents/dosbox/*ausgewählte Konfiguration*" startet.
Wenn ich keines auswähle startet Dosbox ohne so eine Configuration (und da klappt es auch mit dem redirect ins Nirvana).
 
das &> ist ja auch falsch dort, das & gehört auch nur ganz nach hinten.

Code:
do shell script "/Users/dominus/Code/cvs/dosbox/src/dosbox -conf /users/dominus/documents/dosbox/" & optionen as string & " 2>&1 >/dev/null &"
Code:
do shell script "/Users/dominus/Code/cvs/dosbox/src/dosbox >/dev/null &"
 
Danke, ändert aber leider nichts daran, erst beim beenden von Dosbox beendet sich auch AppleScript-Runner :(
 
Ich hab das so gelöst:
Code:
set the_list to ""
set nl to ASCII character 10
tell application "Finder"
   set file_list to name of every file of folder "Macintosh HD:users:dominus:documents:dosbox" whose name ends with ".conf"
   repeat with entry in file_list
       set the_list to the_list & nl & entry
   end repeat
end tell
set optionen to (choose from list file_list with prompt "DOSBox plays today")
set test to ((optionen as string) & "&> /dev/null &")
if optionen is not false then
   do shell script "/Users/dominus/Code/cvs/dosbox/src/dosbox -conf /users/dominus/documents/dosbox/" & test
else if optionen is false then
   do shell script "/Users/dominus/Code/cvs/dosbox/src/dosbox &> /dev/null &"
end if
Die & vor den > /dev/null waren zumindest bei mir notwendig, damit es wirklich im Hintergrund läuft, ohne das extra & wurde AppleScript Runner nicht beendet. Keine Ahnung warum...

Edit: weiß jetzt warum...
Beim Original Script mit
do shell "bla bla" & optionen as string & "bla bla"
wurde das as nicht als Teil von optionen gesehn, sondern als Teil von do shell. Wenn ich das von vorneherein in einer Klammer gehabt hätte (optionen as string) hätte es auch gleich geklappt....
 
Zuletzt bearbeitet:
Zurück
Oben Unten