• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Script zum automatischen löschen

macgyver95

Fießers Erstling
Registriert
06.07.09
Beiträge
131
Hallo alle zusammen,
ich bin von Natur aus ein fauler Mensch und aus dem Grund auch zu faul ständig meinen Download Ordner zu leeren und die Sachen, die ich momentan noch brauche dort zu lassen. Deswegen hätte ich gerne ein Script, dass bei jedem Anmelden alle Objekte löscht, die älter als zwei Tage sind. Hoffe das hier ist der richtige Bereich für so etwas und dass mir wer helfen kann. Weil ich kenne mich null mit dem Scripteditor aus.
lg macgyver
 

toc-rox

Weigelts Zinszahler (Rotfranch)
Registriert
15.11.09
Beiträge
247
Löschen oder in den Papierkorb verschieben?
 

bezierkurve

Halberstädter Jungfernapfel
Registriert
12.06.05
Beiträge
3.860
Ein Problem dabei ist, dass Safari bei herunter geladenen Dateien den Zeitstempel der Daten nicht auf den Zeitpunkt des Downloads setzt. Das müsstest also zwei Skripts nutzen:

Eine Ordneraktion, die neu hinzugekommene Dateien im Download-Ordner mit dem aktuellen Datum versieht (z.B. per "do shell script" und touch). Und das eigentliche Skript, das Dateien älter x löscht.
 

macgyver95

Fießers Erstling
Registriert
06.07.09
Beiträge
131
mein Problem ist wie oben geschrieben, dass ich das überhaupt nicht kann. Ich habe überhaupt keine Ahnung davon.
lg
 

macgyver95

Fießers Erstling
Registriert
06.07.09
Beiträge
131
ok dann werde ich mich da mal ranmachen in den nächsten Tagen. Danke schonmal für den Link.
lg
 

toc-rox

Weigelts Zinszahler (Rotfranch)
Registriert
15.11.09
Beiträge
247
Meine Empfehlungen für eine Einarbeitung in AppleScript:
- AppleScript 1-2-3 (879 Seiten)
- AppleScript Language Guide (262 Seiten)
Beide Dokumente stammen von Apple.
 

toc-rox

Weigelts Zinszahler (Rotfranch)
Registriert
15.11.09
Beiträge
247
Das nachfolgende AppleScript kommt deinem Vorhaben m.E. schon recht nahe.
Es markiert im Folder "Downloads" alle Dateien deren Änderungsdatum älter als 7 Tage ist.
Code:
-- Im Folder "Downloads": markiere alle Dateien die älter als n Tage (n * 86400 Sekunden) sind

tell application "Finder"
	activate
	
	set target of front Finder window to path to downloads folder
	set itemList to every item of front Finder window
	
	set selectionTimestamp to ((current date) - (7 * days))
	set itemSelectionList to {}
	
	repeat with currentItem in itemList
		set modificationTimestamp to get modification date of (info for currentItem as alias)
		if (modificationTimestamp ≤ selectionTimestamp) then
			set end of itemSelectionList to currentItem
		end if
	end repeat
	
	set selection to itemSelectionList
end tell
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo!

Wenn man sich mit AppleScript nicht auskennt, nimmt man den Automator. Der kann zwar nicht alles, aber einiges.
Du brauchst eine Ordneraktion, die ein "touch" Befehl auf jede neue geladene Datei anwendet?

Automator -> Vorlage Ordneraktion -> angehängt an "Downloads"
Aktion shellscript ausführen -> Eingabe als Argumente
(im schon vorhandenen Beispielscript ersetzt du das "echo" durch "touch")
Fertig

Wann willst du den Ordner Downloads nach alten Dateien durchsuchen?
Beim Start mit einem Startobjekt?
Oder in der Ordneraktion? Immer wenn dem Ordner ein neues File hinzugefügt wird, würde dann gesucht.

Falls letzteres:
Zweite Aktion: Finder-Objekte suchen (Suchen in Downloads, Zuletzt geöffnet nicht innerhalb von ...)
Bedenke, dass diese Aktion einen Vorgang startet, der nichts mit dem der ersten Aktion zu tun hat.
Einleuchtend?
Also sollte diese zweite Aktion auch nichts mit der ersten zu tun haben (nicht ihren "Output" übernehmen). Dazu ein Rechtsklick in den Kopf der Aktion und "Eingabe ignorieren" wählen.
Die dritte noch fehlende Aktion (irgendwas mit Papierkorb) suchst du selber.

Gruß
 

macgyver95

Fießers Erstling
Registriert
06.07.09
Beiträge
131
ich denke das ich das hingekriegt habe. Allerdings kommt, wenn ich den Ablauf ausführe die Meldung:
Bei der Aktion „Finder-Objekte in den Papierkorb legen“ ist ein Fehler aufgetreten.

Ich weiß nicht wie ich das ändern soll.
Aber sonst ist der Beitrag auch für einen absoluten Noob wie mich nachzuvollziehen ;)
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Sorry macgyver!
Ich ahne, was da passiert ist. Also nimm diesen alternativen Weg:

Aktion Angegebene Finder Objekte abfragen (Downloads)
Aktion: Ordnerinhalt abfragen (für alle Unterordner)
Aktion: Finder Objekte filtern (Zuletzt geöffnet nicht innerhalb von ...)
Aktion: In den Papierkorb legen

Gruß
 

macgyver95

Fießers Erstling
Registriert
06.07.09
Beiträge
131
und wie aktiviere ich jetzt den Arbeitsablauf?
Der Ablauf funktioniert jetzt auf jeden Fall ;)
lg
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
und wie aktiviere ich jetzt den Arbeitsablauf?

Eine Möglichkeit habe ich doch in meinem ersten Post beschrieben :oops:
Eine andere wäre, den Workflow als Programm zu speichern und in die Startobjekte zu legen. Oder als iCal Plug-In.
 

macgyver95

Fießers Erstling
Registriert
06.07.09
Beiträge
131
nein ich meinte damit, wie ich den Arbeitsablauf aktiviere. Ode reicht nur speichern des Arbeitsablaufes aus?

Edit:
Ok habs rausgefunden ;) Macht der automatisch. Dann nochmal vielen Dank an dich. Funktioniert super.
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
hmmm kompliziert.

meine lsg mit zwei scripten:

1. eine folderautomation, welche die neuen dateien im downloadfolder toucht (natürlich zum dl-folder attachen):
Code:
on adding folder items to thisFolder after receiving theFiles
repeat with aFile in theFiles
do shell script ("touch '" & posix path of aFile & "'")
end repeat
end

2. ein loginitem, applescript als app gespeichert:
Code:
on run
set dlPath to path to downloads folder
do shell script ("find '" & posix path of dlPath & "' -mtime +2 -exec trash {} \;")
end
das funktioniert vorausgesetzt dein downloadordner == "path to downloads folder" == "$HOME/Downloads/"
"trash" geht nur auf snowleo, soweit ich weiß. sonst musste "rm -r {}" verwenden (löscht die daten unwiderruflich) oder "mv {} $HOME/.Trash/" oder sowas.