• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

[AppleScript] Erstellen von Ordnern durch AppleScript

Honeycrisp

Golden Delicious
Registriert
10.12.20
Beiträge
8
Guten Tag allerseits,
Ich habe ein AppleScript geschrieben, welches so aussieht:

on adding folder items to this_folder after receiving added_items


try


do shell script "open ***"


tell application "System Events"


tell application "Finder" to make new folder at front window


end tell


end try


end
adding folder items to


Der Verwendungszweck dieses Scripts ist es, im Falle einer Änderung in einem Ordner durch Get Backup Pro 3 an anderer Stelle einen neuen Ordner zu erstellen, um den Nutzer über den erfolgreichen Ablauf des Prozesses in Kenntnis zu setzen. Das passiert auch, das Script funktioniert aber ein wenig zu gut, es erstellt nämlich gleich zwei neue Ordner. Der logische Schluss daraus ist, dass ich irgendetwas falsch mache, es erschließt sich mir aber nicht, was es sein soll. Wie bezwecke ich, dass dieses Script nur einen neuen Ordner erstellt? und wäre es irgendwie möglich, dem erstellten Ordner einen Namen zu geben und gegebenenfalls gleichnamige bestehende Ordner damit zu überschreiben?
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo,

  • der tell "System Events" Block ist überflüssig und kann raus.
  • Wenn dem überwachten Ordner mehrere Objekte übergeben werden (hier wohl zwei), werden auch mehrere Ordner im Ziel-Fenster (hier front window) erstellt
Ordner überschreiben ist nicht ganz so einfach, wäre zwar möglich, scheint mir hier aber gar nicht nötig. Wozu einen leeren Ordner überschreiben?

Code:
on adding folder items to this_folder after receiving added_items
    
    try
        do shell script "open ***"
        tell application "Finder" to make new folder at front window with properties {name:"Test"}
    end try
end adding folder items to

Wenn schon ein Ordner "Test" existiert, bricht das Skript ab.

Gruß
 
  • Like
Reaktionen: doc_holleday

Honeycrisp

Golden Delicious
Registriert
10.12.20
Beiträge
8
Ordner überschreiben ist nicht ganz so einfach, wäre zwar möglich, scheint mir hier aber gar nicht nötig. Wozu einen leeren Ordner überschreiben?
Der Sinn dahinter soll sein, dass der Ordner einen Namen bekommt und das
Wenn schon ein Ordner "Test" existiert, bricht das Skript ab.
nicht passiert. Wenn ich nämlich einen Namen für den Ordner festlege, wird dieser einmal erstellt und wenn das Skript erneut ausgeführt wird, wird es abgebrochen. Deswegen will ich diesen Ordner entweder überschreiben oder vor der Erstellung des neuen löschen (Letzteres habe ich bisher auch erfolglos versucht).

Gruß
  • Wenn dem überwachten Ordner mehrere Objekte übergeben werden (hier wohl zwei), werden auch mehrere Ordner im Ziel-Fenster (hier front window) erstellt
Diese Mehrfache Ordnererstellung geschieht aber nur, wenn sich in dem Zielordner bereits ein Ordner befindet. Wenn der Zielordner leer ist, wird nur einer darin erstellt.
EDIT: Es findet jetzt auch statt, wenn der Zielordner leer ist.
 
Zuletzt bearbeitet:

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo,

ich habe es leider wohl noch nicht richtig verstanden.
Wenn ich nämlich einen Namen für den Ordner festlege, wird dieser einmal erstellt und wenn das Skript erneut ausgeführt wird, wird es abgebrochen
Nein. Es wird nicht abgebrochen. Nur der Teil des Skripts, der im try-Block steht, wird zum Teil nicht ausgeführt werden, da ja schon ein Ordner mit dem Namen existiert. Ein Sinn eines try Statements ist, dass das Skript bei einer Fehlermeldung weiterläuft.


Deswegen will ich diesen Ordner entweder überschreiben oder vor der Erstellung des neuen löschen (Letzteres habe ich bisher auch erfolglos versucht).
Da sich das "Front window" bei Benutzung des Finders ständig ändern kann, ist es als Pfadangabe gänzlich ungeeignet. Es sei denn, der Ordner soll wirklich in dem Verzeichnis erstellt werden, in dem man sich gerade just befindet.

Soll der "Benachrichtigung"-Ordner - sofern vorhanden- eventuell umbenannt werden?
Hier mal ein Skript, welches einen Ordner auf dem Schreibtisch mit einer bestimmten Bezeichnung ("###") und einem aktuellen Zeitstempel versieht. Beim erneuten Ausführen des Skripts wird er (mit einem aktuellen Zeitstempel) -> überschrieben


Code:
set x to do shell script "find $HOME/Desktop/ -name '###_*'"

if x is not "" then
    do shell script "mv " & quoted form of x & " ${HOME}'/Desktop/###_'$( date \"+%d.%m||%H•%M•%S\" )"
else
    do shell script "mkdir ${HOME}'/Desktop/###_'$( date \"+%d.%m||%H•%M•%S\" )"
end if


Gruß
 
  • Like
Reaktionen: doc_holleday

Honeycrisp

Golden Delicious
Registriert
10.12.20
Beiträge
8
Update:
Ich habe eine Lösung gefunden und sie sieht so aus:


on adding folder items to this_folder after receiving added_items

try

do shell script "open ***"

tell application "Finder"

move folder alias "***" to trash

delay 2

make new folder with properties {name:"Success"} at front window

end tell

end try

end
adding folder items to


Anmerkung:
1: Die Pfadangabe in Zeile 3 muss mit Slashes abgetrennt werden (ganz am Anfang muss auch einer sein), die in Zeile 5 mit Doppelpunkten (am Anfang keiner). Pfadangaben kann man auf einen Rechtsklick folgend mit gehaltener alt-Taste kopieren.
2: Der Delay ist wahrscheinlich nicht notwendig und dient soweit ich es erkennen kann keinem Zweck außer meinen eigenen Präferenzen hinsichtlich Ästhetik.