Liste aller Dateien in einem Verzeichnis - Teil 2
30.03.14 23:16 Kategorisiert in: Mac OS X | AppleScript
Per Email erhielt ich die Nachfrage, ob mein AppleScript zum auflisten aller Dateien in einem beliebigen Verzeichnis nicht auch Ordner mit auflisten könnte.
Das Geheimnis dahinter liegt im Schlüsselwort "file" ("Datei") am Anfang des Scripts. Ersetzt man Dieses durch "folder" ("Ordner") oder "item" ("Einträge") kann man steuern, was vom Skript abgefragt wird. Dies lässt sich natürlich auch komfortabel per Dialog steuern. Deshalb hier also nun die zweite Version des Skripts. Zunächst wird der Benutzer gefragt, welche Ordnerinhalte gelistet werden sollen. Nach Auswahl des abzufragenden Ordners wird dann noch nachgefragt, ob Datei- bzw. Ordnergrößen mit angegeben werden sollen.
Diese Version zeigt nach Abschluss zudem an, dass die gewünschten Daten in der Zwischenablage gelandet sind. Bei OS X Systemen ohne Mitteilungszentrale - also OS X 10.7 und früher - sollte diese Zeile also aus dem Skript gelöscht werden.
Voraussetzungen: Mac OS X 10.8 und später (sollte auf so ziemlich allen Versionen laufen, wenn die Zeile "display notification with title "Zwischenablage" subtitle "Die Liste der Ordnerinhalte wurden in die Zwischenablage kopiert."" aus dem Skript entfernt wird, getestet auf Mac OS X 10.9.2)
tell application "Finder"
set theFileList to {}
set withsizes to false
display dialog "Welche Ordnerinhalte sollen ausgegeben werden?" buttons {"Dateien", "Ordner", "Dateien und Ordner"}
set DlogResult to result
if button returned of result = "Dateien" then
set allFiles to (every file of (choose folder))
else if button returned of result = "Ordner" then
set allFiles to (every folder of (choose folder))
else
set allFiles to (every item of (choose folder))
end if
display dialog "Sollen die Dateigrößen mit ausgegeben werden?" buttons {"Ja", "Nein"}
set DlogResult to result
if button returned of result = "Ja" then set withsizes to true
repeat with i from 1 to count items of allFiles
set SingleFile to (item i of allFiles) as alias
if withsizes = true then
if size of (get info for SingleFile) < 1000000 then
set end of theFileList to ((name of SingleFile) & " (" & ¬
(round (size of (get info for SingleFile)) / 1000) & " KB) " & return) as string
else
set end of theFileList to ((name of SingleFile) & " (" & ¬
(round (size of (get info for SingleFile)) / 1000000) & " MB) " & return) as string
end if
else
set end of theFileList to ((name of SingleFile) & return) as string
end if
end repeat
set the clipboard to the (theFileList as string)
display notification with title "Zwischenablage" subtitle "Die Liste der Ordnerinhalte wurden in die Zwischenablage kopiert."
beep
end tell
Das Geheimnis dahinter liegt im Schlüsselwort "file" ("Datei") am Anfang des Scripts. Ersetzt man Dieses durch "folder" ("Ordner") oder "item" ("Einträge") kann man steuern, was vom Skript abgefragt wird. Dies lässt sich natürlich auch komfortabel per Dialog steuern. Deshalb hier also nun die zweite Version des Skripts. Zunächst wird der Benutzer gefragt, welche Ordnerinhalte gelistet werden sollen. Nach Auswahl des abzufragenden Ordners wird dann noch nachgefragt, ob Datei- bzw. Ordnergrößen mit angegeben werden sollen.
Diese Version zeigt nach Abschluss zudem an, dass die gewünschten Daten in der Zwischenablage gelandet sind. Bei OS X Systemen ohne Mitteilungszentrale - also OS X 10.7 und früher - sollte diese Zeile also aus dem Skript gelöscht werden.
Voraussetzungen: Mac OS X 10.8 und später (sollte auf so ziemlich allen Versionen laufen, wenn die Zeile "display notification with title "Zwischenablage" subtitle "Die Liste der Ordnerinhalte wurden in die Zwischenablage kopiert."" aus dem Skript entfernt wird, getestet auf Mac OS X 10.9.2)
tell application "Finder"
set theFileList to {}
set withsizes to false
display dialog "Welche Ordnerinhalte sollen ausgegeben werden?" buttons {"Dateien", "Ordner", "Dateien und Ordner"}
set DlogResult to result
if button returned of result = "Dateien" then
set allFiles to (every file of (choose folder))
else if button returned of result = "Ordner" then
set allFiles to (every folder of (choose folder))
else
set allFiles to (every item of (choose folder))
end if
display dialog "Sollen die Dateigrößen mit ausgegeben werden?" buttons {"Ja", "Nein"}
set DlogResult to result
if button returned of result = "Ja" then set withsizes to true
repeat with i from 1 to count items of allFiles
set SingleFile to (item i of allFiles) as alias
if withsizes = true then
if size of (get info for SingleFile) < 1000000 then
set end of theFileList to ((name of SingleFile) & " (" & ¬
(round (size of (get info for SingleFile)) / 1000) & " KB) " & return) as string
else
set end of theFileList to ((name of SingleFile) & " (" & ¬
(round (size of (get info for SingleFile)) / 1000000) & " MB) " & return) as string
end if
else
set end of theFileList to ((name of SingleFile) & return) as string
end if
end repeat
set the clipboard to the (theFileList as string)
display notification with title "Zwischenablage" subtitle "Die Liste der Ordnerinhalte wurden in die Zwischenablage kopiert."
beep
end tell
Liste aller Dateien in einem Verzeichnis
22.01.12 10:00 Kategorisiert in: Mac OS X | AppleScript
Auf den ersten Blick ist es eigentlich nur ein ganz kleines Problem: Man benötigt die Namen aller Dateien eines Verzeichnisses als Text-Liste. Aber wie erstellt man sich mal schnell eine solche Liste? AppleScript leistet auch hier gute Dienste! Mit Hilfe eines kleinen Skripts listet man alle Dateinamen (Ordner werden nicht mit ausgegeben) innerhalb eines Verzeichnisses auf.
Dieses Script fragt zunächst nach dem Ordner, der aufgelistet werden soll. Danach wird noch gefragt ob das Ergebnis auch die Dateigrößen enthalten soll, oder nicht. Das Ergebnis landet dann in der Zwischenablage. Da das Skript bei größeren Verzeichnissen schon mal etwas länger benötigt, wird am Ende der System-Ton ausgegeben. Dies signalisiert das Ende der Operation. (Dank an Martin Wolter für die Hilfestellung!)
Voraussetzungen: Mac OS X 10.x (sollte auf so ziemlich allen Versionen laufen, getestet auf Mac OS X 10.7.2)
tell application "Finder"
set allFiles to (every file of (choose folder))
set theFileList to {}
set withsizes to false
display dialog "Sollen die Dateigrößen mit ausgegeben werden?" buttons {"Ja", "Nein"}
set DlogResult to result
if button returned of result = "Ja" then set withsizes to true
repeat with i from 1 to count items of allFiles
set SingleFile to (item i of allFiles) as alias
if withsizes = true then
if size of (get info for SingleFile) < 1000000 then
set end of theFileList to ((name of SingleFile) & " (" & ¬
(round (size of (get info for SingleFile)) / 1000) & " KB) " & return) as string
else
set end of theFileList to ((name of SingleFile) & " (" & ¬
(round (size of (get info for SingleFile)) / 1000000) & " MB) " & return) as string
end if
else
set end of theFileList to ((name of SingleFile) & return) as string
end if
end repeat
set the clipboard to the (theFileList as string)
beep
end tell
Dieses Script fragt zunächst nach dem Ordner, der aufgelistet werden soll. Danach wird noch gefragt ob das Ergebnis auch die Dateigrößen enthalten soll, oder nicht. Das Ergebnis landet dann in der Zwischenablage. Da das Skript bei größeren Verzeichnissen schon mal etwas länger benötigt, wird am Ende der System-Ton ausgegeben. Dies signalisiert das Ende der Operation. (Dank an Martin Wolter für die Hilfestellung!)
Voraussetzungen: Mac OS X 10.x (sollte auf so ziemlich allen Versionen laufen, getestet auf Mac OS X 10.7.2)
tell application "Finder"
set allFiles to (every file of (choose folder))
set theFileList to {}
set withsizes to false
display dialog "Sollen die Dateigrößen mit ausgegeben werden?" buttons {"Ja", "Nein"}
set DlogResult to result
if button returned of result = "Ja" then set withsizes to true
repeat with i from 1 to count items of allFiles
set SingleFile to (item i of allFiles) as alias
if withsizes = true then
if size of (get info for SingleFile) < 1000000 then
set end of theFileList to ((name of SingleFile) & " (" & ¬
(round (size of (get info for SingleFile)) / 1000) & " KB) " & return) as string
else
set end of theFileList to ((name of SingleFile) & " (" & ¬
(round (size of (get info for SingleFile)) / 1000000) & " MB) " & return) as string
end if
else
set end of theFileList to ((name of SingleFile) & return) as string
end if
end repeat
set the clipboard to the (theFileList as string)
beep
end tell
Auflösung automatisch umschalten, wenn ein Programm gestartet wird
10.01.12 10:00 Kategorisiert in: Mac OS X | AppleScript
Einen Mac als Media Center am heimischen TV zu nutzen bringt ungeheure Vorteile, denn neben Musik und Filmen, kann man so bequem vom Sofa aus zum Beispiel online Pizza bestellen, Nachrichten lesen oder auch mal ein Spiel spielen. Allerdings kann Full HD (1080p / 1080i) auch schon mal ganz schön klein sein, wenn man etwas lesen will.
Mithilfe des Hilfsprogramms SwitchResX und einem AppleScript, kann man die Auflösung für beliebige Programme automatisch umschalten lassen, und nach Beendigung des Programms auch wieder in die bevorzuge Auflösung zurück wechseln lassen. Den gesamten Eintrag lesen ...
Mithilfe des Hilfsprogramms SwitchResX und einem AppleScript, kann man die Auflösung für beliebige Programme automatisch umschalten lassen, und nach Beendigung des Programms auch wieder in die bevorzuge Auflösung zurück wechseln lassen. Den gesamten Eintrag lesen ...
Ordner suchen, die nur eine Datei enthalten
19.12.11 10:00 Kategorisiert in: Mac OS X | AppleScript
Dieses kleine AppleScript hilft dabei, alle Ordner aufzulisten, in denen nur eine einzelne Datei enthalten ist. Dies ist z.B. hilfreich, wenn man in der eigenen Musik-Library nach Alben (=Ordner) suchen will, die nur einen Titel enthalten. Das Skript fragt zunächst nach, in welchem Ordner die Suche beginnen soll. Im AppleScript-Editor erhält man dann eine Liste die den vollen Pfad sowie die einzelne Datei enthält:
{"Macintosh HD:Users:basti:Music:iTunes:iTunes Music:Music:Anna Ternheim:Girl Laying Down - EP:", {"02 Little Lies.m4a"},
{"Macintosh HD:Users:basti:Music:iTunes:iTunes Music:Music:Bronski Beat:The Age of Consent:", {"06 Smalltown Boy.m4p"},
{"Macintosh HD:Users:basti:Music:iTunes:iTunes Music:Music:Clueso:So Sehr Dabei:", {"07 Gewinner.mp3"}, "
Voraussetzungen: Mac OS X 10.x (sollte auf so ziemlich allen Versionen laufen, getestet auf Mac OS X 10.7.2)
set a to choose folder -- Benutzer fragen, Ordner auswählen (z.B. iTunes Music:Music)
set {each_Folder, dummy} to {{}, {}} -- zwei leere Listen anlegen
tell application "Finder"
set allFold to every folder of entire contents of folder a
--Liste 'allFold' mit allen Ordnern und Unter-Ordnern füllen
repeat with a_Fold in allFold -- Durch jeden einzelnen Eintrag der Liste gehen
set numberOfFiles to number of files in a_Fold -- Inhalt zählen
if numberOfFiles = 1 then -- Wenn nur eine Datei enthalten ist, ...
set dummy to the name of every file in a_Fold -- … dann den Dateinamen holen ...
set end of each_Folder to {(a_Fold as Unicode text), dummy} & return
-- ... und dann den Pfad zur Datei und den Dateinamen in eine zweite Liste schreiben
end if
set dummy to {} -- Liste 'dummy' leeren für den nächsten Durchlauf
end repeat
end tell
each_Folder -- Ergebnis ausgeben
{"Macintosh HD:Users:basti:Music:iTunes:iTunes Music:Music:Anna Ternheim:Girl Laying Down - EP:", {"02 Little Lies.m4a"},
{"Macintosh HD:Users:basti:Music:iTunes:iTunes Music:Music:Bronski Beat:The Age of Consent:", {"06 Smalltown Boy.m4p"},
{"Macintosh HD:Users:basti:Music:iTunes:iTunes Music:Music:Clueso:So Sehr Dabei:", {"07 Gewinner.mp3"}, "
Voraussetzungen: Mac OS X 10.x (sollte auf so ziemlich allen Versionen laufen, getestet auf Mac OS X 10.7.2)
set a to choose folder -- Benutzer fragen, Ordner auswählen (z.B. iTunes Music:Music)
set {each_Folder, dummy} to {{}, {}} -- zwei leere Listen anlegen
tell application "Finder"
set allFold to every folder of entire contents of folder a
--Liste 'allFold' mit allen Ordnern und Unter-Ordnern füllen
repeat with a_Fold in allFold -- Durch jeden einzelnen Eintrag der Liste gehen
set numberOfFiles to number of files in a_Fold -- Inhalt zählen
if numberOfFiles = 1 then -- Wenn nur eine Datei enthalten ist, ...
set dummy to the name of every file in a_Fold -- … dann den Dateinamen holen ...
set end of each_Folder to {(a_Fold as Unicode text), dummy} & return
-- ... und dann den Pfad zur Datei und den Dateinamen in eine zweite Liste schreiben
end if
set dummy to {} -- Liste 'dummy' leeren für den nächsten Durchlauf
end repeat
end tell
each_Folder -- Ergebnis ausgeben
AppleScript zum Umschalten der Audio-Ausgabe von Mac OS X
06.03.11 10:00 Kategorisiert in: Mac OS X | AppleScript
Vielleicht kennt der ein oder andere das Problem: Aus irgendeinem Grund verstellt der Mac die Einstellungen zur Audio-Ausgabe. Mit einem kleinen AppleScript lässt sie das Umschalten der Audio-Ausgabe automatisieren. Den gesamten Eintrag lesen ...
MagicMouse / MightyMouse via Bluetooth mit Windows verbinden
29.01.10 10:00 Kategorisiert in: Windows
Um eine Apple MagicMouse oder eine Apple Bluetooth Tastatur auch unter Windows verwenden zu können, müssen diese Geräte mit dem System via "pairing" verbunden werden. Dazu sind folgende Schritte notwendig:
- Die "Bluetooth" Systemsteuerung in Windows öffnen
- Ein neues Gerät hinzufügen und dem Assistenten folgen
- Um ein Apple-Bluetooth Gerät "sichtbar" zu machen, einfach aus- und wieder einschalten
- Einen "eigenen Code" für das pairing verwenden: Eine Apple Wireless Mouse verwendet vier Nullen ("0000"), ein Apple Wireless Keyboard verwendet 8 bis 16 Stellen. Dabei unbedingt darauf achten nicht die Ziffern auf dem Nummernblock zu verwenden.