Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
macjoe •->

Anmeldedatum: 07.05.2003 Beiträge: 14
|
Verfasst am: 07.05.2003 - 14:57 Titel: Ordner automatisch löschen |
|
|
Hallo,
ich bin auf der Suche nach einem Script das nach 3 Tagen den Inhalt eines Ordner (andere Ordner) automatisch löscht.
Hat jemad so etwas schon fertig?
Für Hilfe bin ich serh dankbar!
Viele Grüße
Macjoe  |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 07.05.2003 - 18:37 Titel: |
|
|
Hallo Macjoe,
Ich habe mal eben ein entsprechendes Skript gebastelt. Achtung! Es ist nicht praxiserprobt.
Hier das Skript:
-- das jeweils letzte Löschungsdatum wird
-- in der folgenden Variable gespeichert
property zuletztGeloescht : ""
set Heute to (current date)
-- bei Erstanwendung noch leer
if zuletztGeloescht = "" then
set zuletztGeloescht to Heute
end if
set ZeitDifferenz to (Heute - zuletztGeloescht)
set TagesDifferenz to ¬
round (ZeitDifferenz / 86400) rounding as taught in school
if TagesDifferenz ≥ 3 then
set ZielOrdner to "Macintosh HD:Desktop Folder:Bilder:" as alias
tell application "Finder"
-- nur Ordner werden aufgelistet
set FolderList to every folder of folder ZielOrdner
try -- nur wenn Ordner existieren
repeat with oneFolder in FolderList
-- und in den Papierkorb verfrachtet
move oneFolder to the trash
end repeat
end try
-- Inhalt des Papierkorbs wird geprüft
set TrashList to contents of trash
if TrashList is not {} then
-- falls etwas im Papierkorb ist:
-- Was soll damit geschehen?
set theDlog to (display dialog ¬
"Es befinden sich Objekte im Papierkorb." & return & ¬
"Soll der Papierkorb entleert werden?" buttons ¬
{"Nein", "Inhalt ansehen", "Jetzt leeren"} ¬
default button 3 giving up after 20)
-- Nichts
if button returned of theDlog = "Nein" or gave up of theDlog then
return
else if button returned of theDlog = "Inhalt ansehen" then
activate
--Papierkorb wird geöffnet
open trash
else
-- Papierkorb wird geleert
empty the trash
end if
end if
end tell
end if
Das Skript als Programm (Classic Applet) speichern (ohne Startdialog) und in die Startobjekte des Systemordners verfrachten. Natürlich musst du es nicht unbedingt in den Startobjekten haben. Du könntest auch den iDo Script Scheduler einsetzen, um das Skript regelmäßig ausführen zu lassen - oder du startest es eben immer wieder mal selbst.
Gruß _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
macjoe •->

Anmeldedatum: 07.05.2003 Beiträge: 14
|
Verfasst am: 15.05.2003 - 13:24 Titel: |
|
|
Hallo Snow,
erst mal vielen Dank für die super schnelle Hilfe...
Ich habe aber noch Probleme mit den Script.
Noch mal zum Verständnis:
Ich möchte alle Ordner die sich in einem Verzeichnis befinden löschen die älter als x Tage sind.
Wenn ich es richtig sehen, dann geht die Datum-Abfrage jetzt auf den Hauptordner und nicht auf den jeweiligen "Inhalt" Ordner.
Ich möchte aber gerne jeden Ordner der sich darin befindet auf seine Gültigkeit überprüfen und ggfl. löschen.
Das Script macht bei mir auch keine Aktion. Es werden zwar alle Variablen gesetzt aber der Löschvorgang wird nicht ausgeführt.
Schon mal vielen Dank für Deine Hilfe
Viele Grüsse
Macjoe |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 15.05.2003 - 18:59 Titel: |
|
|
Hallo macjoe,
ich habe das Skript jetzt mal entsprechend umgestaltet.
Nun wird das Änderungsdatum eines Ordners geprüft. Ist dies älter als drei Tage, wird der Ordner in den Papierkorb verfrachtet.
Skript:
global Heute
set Heute to (current date)
set ZielOrdner to "Datengrab:Desktop Folder:Brauche Input:" as alias
tell application "Finder"
-- nur Ordner werden aufgelistet
set FolderList to every folder of folder ZielOrdner
try -- nur wenn Ordner existieren
repeat with oneFolder in FolderList
set oneFolder to oneFolder as alias
-- Handler wird aufgerufen, der
-- die Ordner prüft und ggf. löscht
my CheckFolder(oneFolder)
end repeat
end try
-- Inhalt des Papierkorbs wird geprüft
set TrashList to contents of trash
if TrashList is not {} then
-- falls etwas im Papierkorb ist:
-- Was soll damit geschehen?
set theDlog to (display dialog ¬
"Es befinden sich Objekte im Papierkorb." & return & ¬
"Soll der Papierkorb entleert werden?" buttons ¬
{"Nein", "Inhalt ansehen", "Jetzt leeren"} ¬
default button 3 giving up after 20)
-- Nichts
if button returned of theDlog = "Nein" or gave up of theDlog then
return
else if button returned of theDlog = "Inhalt ansehen" then
activate
--Papierkorb wird geöffnet
open trash
else
-- Papierkorb wird geleert
empty the trash
end if
end if
end tell
on CheckFolder(oneFolder)
set foldInfo to info for oneFolder
-- das Änderungsdatum des Ordners wird geprüft
set ModDate to modification date of foldInfo
set ZeitDifferenz to (Heute - ModDate)
set TagesDifferenz to ¬
round (ZeitDifferenz / 86400) rounding as taught in school
log "Tagesdifferenz: " & TagesDifferenz
if TagesDifferenz ≥ 3 then
tell application "Finder" to move oneFolder to the trash
end if
end CheckFolder
Viel Erfolg beim Testen
Gruß _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
macjoe •->

Anmeldedatum: 07.05.2003 Beiträge: 14
|
Verfasst am: 16.05.2003 - 10:26 Titel: |
|
|
Super!
Vielen Dank!
Ich habe noch den Dialog raus genommen um das Script ohne Aufsicht laufen zu lassen.
Viele Grüsse
Macjoe
PS: Woher kennst Du den Namen meiner Festplatten?
Eine meiner Platten heist "Datengrab"  |
|
Nach oben |
|
 |
macjoe •->

Anmeldedatum: 07.05.2003 Beiträge: 14
|
Verfasst am: 16.05.2003 - 11:10 Titel: |
|
|
Doch noch ein Problem...
Das ganze soll den Ordner auf einem Linux Server passieren.
Was muss ich dem Script sagen das es richtig arbeitet?
Es funktionert lokal aber nicht auf einer Server Festplatte die gemountet ist...
Danke
Viele Grüsse
Macjoe  |
|
Nach oben |
|
 |
macjoe •->

Anmeldedatum: 07.05.2003 Beiträge: 14
|
Verfasst am: 25.05.2003 - 21:41 Titel: |
|
|
Fehler gefunden...
Das Problem auf dem Linux Server war, dass der Ordner der überwacht werden soll in einem geschützen Verzeichnis liegt. Dadurch kann die Datei nicht in den Network Trash von netatalk verschoben werden.
Das Verändern der Zugriffsrechte hat das Problem beseitigt.
Auf einem OS X Fileserver ist es übrigens das Gleiche...
Viele Grüße
Macjoe |
|
Nach oben |
|
 |
|