buridans_esel
Aktives Mitglied
Thread Starter
- Dabei seit
- 26.10.2005
- Beiträge
- 135
- Reaktionspunkte
- 13
Ich bastle an einem Skript, das bestimmte geöffnete Volumes auswirft und die zugehörigen Image-Dateien in den Papierkorb legt. (Szenario: mehrere .dmg-Images runtergeladen, ihre Volumes aktiviert, .app-Pakete rauskopiert, Images sollen weg). Filtern kann ich später, die vorläufige Version (s.u.) wirft einfach erstmal alle aktiven Images aus und legt die .dmgs in den Papierkorb.
Es funktioniert zwar, aber ist nicht sonderlich elegant (RegEx-Suche / Ersetzungen in der Ausgabe von hdiutil info). Kennt jemand eine Möglichkeit, zu einem aktiven (gemounteten) Volume in AppleScript die zugehörige Image-Datei aufzufinden?
Im Finder-Info-Fenster erscheint ja zu jedem Volume das Image, aus dem es aktiviert wurde. Aber an diese Information zu einem Volume komme ich in AppleScript nicht ran. Weder über die Eigenschaften der disk (im Finder-Vokabular), noch über info for (disk "VolumeName" as alias).
Unten mein code. Wie gesagt, ich würde gern ohne Shell-Befehle auskommen.
Es funktioniert zwar, aber ist nicht sonderlich elegant (RegEx-Suche / Ersetzungen in der Ausgabe von hdiutil info). Kennt jemand eine Möglichkeit, zu einem aktiven (gemounteten) Volume in AppleScript die zugehörige Image-Datei aufzufinden?
Im Finder-Info-Fenster erscheint ja zu jedem Volume das Image, aus dem es aktiviert wurde. Aber an diese Information zu einem Volume komme ich in AppleScript nicht ran. Weder über die Eigenschaften der disk (im Finder-Vokabular), noch über info for (disk "VolumeName" as alias).
Unten mein code. Wie gesagt, ich würde gern ohne Shell-Befehle auskommen.
Code:
#--> Liste der .dmg-Dateien und ihrer aktivierten Volumes auslesen
set cmd to {"hdiutil info | grep -e 'image-path\\|/dev/.*/Volumes/' | ", ¬
"sed -E s/'image.+: '//g | ", ¬
"sed -E s='/dev/.+/Volumes/'==g"} as text
do shell script cmd
set dmg_volumes to splitBy(result, "\r") -- Zeilen trennen
(** die Liste hat folgende Struktur:
* /Users/username/Pfad/zur/dmg-Datei-1.dmg
* Volume-Name-1
* /Users/username/Pfad/zur/dmg-Datei-2.dmg
* Volume-Name-2
* ...
*)
tell application "Finder"
set i to 0
set l to length of dmg_volumes
repeat while i < l and l > 1
set i to i + 2
# --> auswerfen und in den Papierkorb legen
eject disk (item i of dmg_volumes)
set dmg_file to POSIX file (item (i - 1) of dmg_volumes) as text
move dmg_file to the trash
end repeat
end tell
to splitBy(some_text, sep) --split text by separator
set tid to text item delimiters
set text item delimiters to sep
set the_list to text items of some_text
set text item delimiters to tid
return the_list
end splitBy