Hallo,
ich habe mal ein bisschen gebastelt, und herausgekommen sind zwei Scripte die genau das machen was Du eingangs beschrieben hast.
Zunächst mal das Script das die eigentliche Arbeit macht:
Code:
set a to do shell script "ls -lk [COLOR=Red]/Users/Username/Pfad/zum/Ordner/[/COLOR] | sort -n +4 | grep total"
set itemized to every word of a
set c to get last word of a as string
set d to (round c / 1024) as string
if d < [COLOR=Red]599[/COLOR] then set burn to false
if d ≥ [COLOR=Red]599[/COLOR] then set burn to true
if burn is equal to false then display dialog "Ordner ist noch nicht voll genug."
if burn is equal to true then
display dialog "Ordner wird jetzt zum Brennen vorbereitet, temporäres DMG wird [COLOR=Red]wo auch immer[/COLOR] angelegt."
do shell script "hdiutil create -srcfolder [COLOR=Red]/Users/Username/Pfad/zum/Ordner/wie/oben/[/COLOR] [COLOR=Red]/Users/Username/Pfad/zur/Imagedatei/[/COLOR]"
display dialog "Brennvorgang wird gestartet. Medium eingelegt?"
do shell script "hdiutil burn [COLOR=Red]/Users/Username/Pfad/zur/Imagedatei/[/COLOR]"
display dialog "Brennvorgang beendet. Temporäres DMG [COLOR=Red]wo auch immer[/COLOR] wird gelöscht"
do shell script "rm -f [COLOR=Red]/Users/Username/Pfad/zur/Imagedatei/[/COLOR]"
end if
Alle rot markierten Teile im Code müssen entweder zwingend (Pfade), oder nach Gusto (Schwellenwert der Größe (CD oder DVD, alle Angaben in MB), Dialogmeldungen) abgeändert werden.
Sieht bei mir z.B. so aus:
Code:
set a to do shell script "ls -lk [COLOR=Red]/Users/flo/Desktop/burn/[/COLOR] | sort -n +4 | grep total"
set itemized to every word of a
set c to get last word of a as string
set d to (round c / 1024) as string
if d < [COLOR=Red]599[/COLOR] then set burn to false
if d ≥ [COLOR=Red]599[/COLOR] then set burn to true
if burn is equal to false then display dialog "Ordner ist noch nicht voll genug."
if burn is equal to true then
display dialog "Ordner wird jetzt zum Brennen vorbereitet, temporäres DMG wird [COLOR=Red]auf Desktop[/COLOR] angelegt."
do shell script "hdiutil create -srcfolder [COLOR=Red]/Users/flo/Desktop/burn /Users/flo/Desktop/temptoburn[/COLOR]"
display dialog "Brennvorgang wird gestartet. Medium eingelegt?"
do shell script "hdiutil burn [COLOR=Red]/Users/flo/Desktop/temptoburn.dmg[/COLOR]"
display dialog "Brennvorgang beendet. Temporäres DMG [COLOR=Red]auf Desktop[/COLOR] wird gelöscht"
do shell script "rm -f [COLOR=Red]/Users/flo/Desktop/temptoburn.dmg[/COLOR]"
end if
Die Dialoge kann man auch noch rausschmeissen wenn man wirklich überhaupt nicht von dem Ding behelligt werden will. Rohling muss nicht zeitnah eingelegt werden. Wenn schon einer drin ist, schnappt sich das Script den. Ist keiner drin, und man hat die Dialoge deaktiviert, passiert so lange nichts bis man einen einlegt. Die fertige CD trägt dann den Namen des Ordners der gebrannt wird (In meinem Beispiel heisst die dann burn).
Das Script am besten als Programm ohne Startdialog und nur ausführbar an einem Ort der sinnvoll erscheint speichern.
Damit der Ordner jetzt aber auch weiss wann es soweit ist, gibt es ein zweites Script, dass dem Ordner als Ordneraktion angehängt werden muss.
Das Script:
Code:
on adding folder items to this_folder after receiving added_items
do shell script "open -a [COLOR=Red]/Pfad/zum/obigem/Script.app[/COLOR]"
end adding folder items to
Diese Ordneraktion macht also nichts anderes als das oben als Programm abgespeicherte Script jedesmal wenn eine Datei dem Ordner hinzugefügt wird aufzurufen. Die Größenabfrage usw. findet dann im Hauptscript statt.
Möglicherweise tauchen im Betrieb noch Schwierigkeiten oder Verzwickungen auf die mir nicht untergekommen sind. Es lassen sich eben nicht immer alle Szenarien/Großkatzen testen. Die Scripte haben so wie hier stehen bei mir (unter Panther, Tiger nicht getestet) exakt die Anforderung aus dem Eingangsposting erfüllt. Sinnvolle Anregungen willkommen.
Grüße,
Flo