[OS X] Den Papierkorb in OS X automatisch leeren lassen mit AppleScript oder Hazel

Den Papierkorb in OS X automatisch leeren lassen mit AppleScript oder Hazel

Es gibt ein paar Möglichkeiten den Papierkorb in OS X zu überwachen und diesen automatisch entleeren zu lassen. Hazel macht das ganz einfach mit ein paar klicks und lässt sich leicht konfigurieren. (Siehe hier für Hazel Konfiguration) Wer sich aber Hazel nicht kaufen möchte kann das auch mit einem AppleScript tun.

Ich bin neulich hier über ein Script gestolpert welches automatisch den Papierkorb in OS X löschen kann.

Ich habe das Script noch etwas angepasst, einen Fehler ausgebessert so dass Dateien die nicht gelöscht werden sollen aus dem Papierkorb verschoben werden, und das Script auf Deutsch lokalisiert.

Das Prinzip ist ganz einfach. Am Anfang vom Script gibt man an wie Groß der Papierkorb maximal werden darf. Hier kann man seinen gewünschten Wert eintragen. In diesem fall ist die maximale Größe 2GB.

Den Papierkorb in OS X automatisch leeren lassen mit AppleScript oder Hazel
Der nächste Teil des Scriptes überprüft die Größe der in dem Papierkorb verschobenen Dateien. Ist eine Datei größer als die vorher festgelegte maximale Größe des Papierkorbes erscheint ein Dialogfenster. In dem Dialogfenster kann man auswählen ob die Datei nun permanent (also auch gleich aus dem Papierkorb) gelöscht werden soll, oder an einen anderen Platz verschoben werden soll. Hier kann man auch angeben wohin die Dateien die zu groß sind verschoben werden sollen.

Den Papierkorb in OS X automatisch leeren lassen mit AppleScript oder Hazel

 

Wer diese Funktion nicht haben möchte kann auch einfach diesen Teil aus dem Script löschen und die Dateien werden nicht verschoben.

Die neu in den Papierkorb verschobenen Dateien werden nun noch mit dem aktuellem Datum versehen, in dem die Datei einmal „angefasst“ (touch) wird, und somit das Änderungsdatum sich auf das Aktuelle Datum ändert.

Der nächste Schritt ist die nun aktuelle Papierkorb Größe zu ermitteln. Ist die Größe über den festgelegten maximalen Limit werden so lange die ältesten Dateien im Papierkorb gelöscht bis die Größe wieder unter dem maximalen Limit liegt.

Um das Script zu Erstellen öffnet ihr den Applescript-Editor unter Programme > Dienstprogramme und kopiert den folgenden Code in das Scriptfenster. Ihr könnt aber auch das fertige Script hier Downloaden.

 

on adding folder items to this_folder after receiving added_items
  try
    -- Maximale Papierkorp Größe in MB
 set trash_limit to 2048
    -- Größe abfragen und alle eingehenden Files auf aktuelles Datum setzen
 repeat with i from 1 to the count of added_items
 set a_file to item i of added_items
       -- Größe von reinkommenden Files ermitteln und prüfen ob sie die max Größe überschreiten
 set a_file_size to ((do shell script "du -sk " & quoted form of (POSIX path of a_file) & "| awk '{print $1}' ") / 1024)
 if a_file_size is greater than trash_limit then
display dialog quote & (name of (info for a_file)) & quote & " ist zu groß für den Papierkorp. Möchtest du es permanent löschen?" buttons {"Ja", "Nein"} default button "Nein"
 set response to the button returned of the result
 if the response is "Ja" then
          -- Permanent löschen
 set sh_script to "rm -Rf " & quoted form of (POSIX path of a_file)
 do shell script sh_script
 end if
 if the response is "Nein" then
             -- Auf den Desktop verschieben
 set sh_script to "cd ~/.Trash;mv " & quoted form of (POSIX path of a_file) & " ~/Desktop/"
 do shell script sh_script
 display dialog quote & (name of (info for a_file)) & quote & " wurde auf den Desktop verschoben."
 end if
 end if
 if a_file_size is not greater than trash_limit then
 set sh_script to "touch " & quoted form of (POSIX path of a_file)
 do shell script sh_script
 end if
 end repeat
   -- Die aktuelle Papierkorp Größe in 1k clustern ermitteln, dann durch 1024 teilen um Megabyte zu bekommen
 set trash_size to do shell script "du -sk ~/.Trash/ | awk '{print $1}'"
 set trash_size to trash_size / 1024
   -- so lange alte files löschen bis wir unter dem Limit sind
 repeat while trash_size is greater than trash_limit
 set trash_files to (list folder this_folder without invisibles)
 set oldest_file to {}
   -- das älteste in den Papierkorp hinzugefügte file ermitteln
 repeat with i from 1 to the count of trash_files
 set a_file to alias ((this_folder as text) & (item i of trash_files))
 if i is equal to 1 then set oldest_file to a_file
 if the (modification date of (info for a_file)) comes before (modification date of (info for oldest_file)) then set oldest_file to a_file
 end repeat    -- dieses file löschen und das Papierkorp Icon aktualisieren
 set sh_script to "rm -Rf " & quoted form of (POSIX path of oldest_file)
 try  do shell script sh_script
 on error  display dialog "Zugriff auf diese Datei verweigert " & quoted form of (POSIX path of oldest_file) & " möchtest du es mit Administrator Rechten löschen?"
 do shell script sh_script with administrator privileges
 end try    -- aufräumen
 set trash_size to do shell script "du -sk ~/.Trash/ | awk '{print $1}'"
 set trash_size to trash_size / 1024
 end repeat  tell application "Finder" to update trash
 end try end adding folder items to

Um das Script benutzen zu können kopiert ihr es in folgenden Ordner in eurem Benutzer Library Ordner.

/Scripts/Folder Action Scripts

Den Papierkorb in OS X automatisch leeren lassen mit AppleScript oder Hazel

 

Um in euren Benutzer Library Ordner zu kommen geht ihr im Finder auf „Gehe zum Ordner“ aus der Menüleiste und Tragt dort ~/Library ein.

Den Papierkorb in OS X automatisch leeren lassen mit AppleScript oder Hazel

 

Sollte der Ordner „Folder Action Scripts“ nicht in dem Ordner Scripts vorhanden sein, legt ihr ihn einfach an.

Nun müsst ihr noch dem Papierkorb eine Ordneraktion (Überwachung) zuweisen. Hierzu müssen wir uns am besten mit diesem Script „Versteckte Dateien anzeigen“ hier die Versteckten Dateien im Benutzerordner anzeigen lassen. Wenn der Papierkorb dann sichtbar ist kann man mit einem Rechts-Klick > Dienste > Ordneraktionen konfigurieren das erstellte Script für den Papierkorb auswählen. Danach kann man mit dem „Versteckte Dateien anzeigen“ wieder die versteckten Dateien ausblenden.

Den Papierkorb in OS X automatisch leeren lassen mit AppleScript oder Hazel

Den Papierkorb in OS X automatisch leeren lassen mit AppleScript oder Hazel

Den Papierkorb in OS X automatisch leeren lassen mit AppleScript oder Hazel


Nun ist der Papierkorb mit dem Script ausgestattet und wird überwacht.

Mit Hazel geht das etwas einfacher.In Hazel kann man sich schnell in den Einstellungen das benötigte zurecht klicken und fertig ist die Laube. Hazel ist hier zu erwerben und kostet $25.

Den Papierkorb in OS X automatisch leeren lassen mit AppleScript oder Hazel

 

1 Antwort

Hinterlassen Sie einen Kommentar

Wollen Sie an der Diskussion teilnehmen?
Feel free to contribute!

Kommentar verfassen