Mit einer Batch alle 7 Tage bestimmte Ordner löschen
Hallo Forum!
Folgendes Problem quält mich:
Wenn ein User auf einem unserer Mulitfunktionsgeräte etwas einscannt, landet das gescannte Dokument auf einem Server. Auf diesem Server hat jeder User sein eigenes Verzeichnis, auf das er per Netzlaufwerk zugreift.
Die User wissen zwar das dieses Laufwerk nur als Zwischenspeicher dienen soll, lassen ihre Dateien aber trotzdem monatelang darauf liegen.
Wäre alles nicht so schlimm wenn es da nicht zwei kleine Probleme gäbe:
-Irgendwann laufen die Platten voll!
-Der Datenschutz lässt das nicht zu, da wir ja sonst nachverfolgen könnten wann wer was gescannt hat und dann noch Jahre später.
Daher nun meine eigentliche Frage:
Gibt es eine Möglichkeit bestimmte Order mit einer Batch zu löschen und dann zu einem festgelegten Zeitpunkt?
Ich war bereits so weit:
@echo off
cls
cd "C:\Dokumente und Einstellungen\muelljo\Desktop\tools1"
echo J | del *.*
cd "C:\Dokumente und Einstellungen\muelljo\Desktop\tools2"
echo J | del *.*
cd "C:\Dokumente und Einstellungen\muelljo\Desktop\tools3"
echo J | del *.*
exit
Diese Batch habe ich dann in Geplante Tasks eingefügt.
Die Ordner die ich mit dieser Batch leere, liegen auf dem Desktop - hier funktioniert die Batch.
Wenn ich allerdings Ordner aus einer Struktur wie auf der Festplatte leere will, also z. B. D:\Scandata\Müller (Der Ordner Müller sollte sich leeren), funktionier diese Batch nicht!
Ich bin leider noch nicht so weit was Batchfiles angeht, also bitte keine großartigen Abkürzungen oder dergleichen.
Gruß
napster
Folgendes Problem quält mich:
Wenn ein User auf einem unserer Mulitfunktionsgeräte etwas einscannt, landet das gescannte Dokument auf einem Server. Auf diesem Server hat jeder User sein eigenes Verzeichnis, auf das er per Netzlaufwerk zugreift.
Die User wissen zwar das dieses Laufwerk nur als Zwischenspeicher dienen soll, lassen ihre Dateien aber trotzdem monatelang darauf liegen.
Wäre alles nicht so schlimm wenn es da nicht zwei kleine Probleme gäbe:
-Irgendwann laufen die Platten voll!
-Der Datenschutz lässt das nicht zu, da wir ja sonst nachverfolgen könnten wann wer was gescannt hat und dann noch Jahre später.
Daher nun meine eigentliche Frage:
Gibt es eine Möglichkeit bestimmte Order mit einer Batch zu löschen und dann zu einem festgelegten Zeitpunkt?
Ich war bereits so weit:
@echo off
cls
cd "C:\Dokumente und Einstellungen\muelljo\Desktop\tools1"
echo J | del *.*
cd "C:\Dokumente und Einstellungen\muelljo\Desktop\tools2"
echo J | del *.*
cd "C:\Dokumente und Einstellungen\muelljo\Desktop\tools3"
echo J | del *.*
exit
Diese Batch habe ich dann in Geplante Tasks eingefügt.
Die Ordner die ich mit dieser Batch leere, liegen auf dem Desktop - hier funktioniert die Batch.
Wenn ich allerdings Ordner aus einer Struktur wie auf der Festplatte leere will, also z. B. D:\Scandata\Müller (Der Ordner Müller sollte sich leeren), funktionier diese Batch nicht!
Ich bin leider noch nicht so weit was Batchfiles angeht, also bitte keine großartigen Abkürzungen oder dergleichen.
Gruß
napster
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 139609
Url: https://administrator.de/contentid/139609
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Napster,
schau Dir mal die Berechtigungen von dem Ordner an, aus dem gelöscht werden soll. Das Batch-File muss mit passenden Berechtigungen ausgeführt werden, damit es funktionieren kann.
Heißt, wenn Du Remote mit Deinem Benutzer auf dem Desktop bist, kannst DU weil DU das Batch ja startest, auf DEINEM Desktop auch DEINE Dateien löschen. Wenn Du aber die Dateien im Ordner vom Herrn Müller nicht anschauen kannst, dann kannst Du die Dateien im Ordner vom Herrn Müller auch nicht löschen! In solch einem Fall müsste das Batch dann eben mit einem anderen Benutzer gestartet werden. Im Normalfall sollte der Admin das können (ist aber nicht unbedingt sinnvoll, das Script mit seinen Berechtigungen laufen zu lassen) oder ein Remote-Backupuser - der muss zum Sichern ja auch die entsprechenden Berechtigungen haben.
Vielleicht hilft Dir das ja schon ein wenig weiter.
Grüßle
Saskia
schau Dir mal die Berechtigungen von dem Ordner an, aus dem gelöscht werden soll. Das Batch-File muss mit passenden Berechtigungen ausgeführt werden, damit es funktionieren kann.
Heißt, wenn Du Remote mit Deinem Benutzer auf dem Desktop bist, kannst DU weil DU das Batch ja startest, auf DEINEM Desktop auch DEINE Dateien löschen. Wenn Du aber die Dateien im Ordner vom Herrn Müller nicht anschauen kannst, dann kannst Du die Dateien im Ordner vom Herrn Müller auch nicht löschen! In solch einem Fall müsste das Batch dann eben mit einem anderen Benutzer gestartet werden. Im Normalfall sollte der Admin das können (ist aber nicht unbedingt sinnvoll, das Script mit seinen Berechtigungen laufen zu lassen) oder ein Remote-Backupuser - der muss zum Sichern ja auch die entsprechenden Berechtigungen haben.
Vielleicht hilft Dir das ja schon ein wenig weiter.
Grüßle
Saskia
Moin napster,
drei Anmerkungen zu deinem Ansatz oben:
Zur eigentlichen Frage....
Wovon denn nun genau das Löschen welcher Ordner abhängig sein soll, das habe ich nicht verstanden.
Nur alle 7 Tage alles Löschen, was älter als 7 Tage ist?
Oder bei jedem Logon alles prüfen, was älter ist?
Oder einmal am Tag/einmal pro Woche prüfen, was älter ist?
Bitte ausformulieren.
Grüße
Biber
drei Anmerkungen zu deinem Ansatz oben:
- nicht mehr starten!!
- es klappt/geht gut, solange der Batch von Laufwerk C: aus aufgerufen wird. Dann wechselt der Batch auf C: von einem Verzeichnis ins andere und löscht die "richtigen" Dateien. Es klappt NICHT, wenn der Batch von Laufwerk C: gestartet wird und dann ein "CD D:\Scandata\..." macht. denn dann ist zwar das gerade aktive Verzeichnis auf Laufwerk D: das "\Scandata" - aber du bzw der Batch befinden sich nach wie vor auf Laufwerk C: Ein Löschen mit Del *.* knallt dir dann alle Daten des gerade aktuellen Verzeichnisses weg!! -----> Siehe Hilfe "CD /?" , insbesondere den Parameter /D.
- zum "echo j|del *.*" ---> der DEL Befehl kennt auch einen Parameter /Q zum "Löschen ohne Nachfrage" -->siehe DEL/? Außerdem kannst du explizit den gewünscheten Pfad angeben und somit auf das ganze Verzeichnisgewechsele verzichten.
Zur eigentlichen Frage....
Wovon denn nun genau das Löschen welcher Ordner abhängig sein soll, das habe ich nicht verstanden.
Nur alle 7 Tage alles Löschen, was älter als 7 Tage ist?
Oder bei jedem Logon alles prüfen, was älter ist?
Oder einmal am Tag/einmal pro Woche prüfen, was älter ist?
Bitte ausformulieren.
Grüße
Biber
Moin napster,
wenn das Beispiel "D:\Scandata" gelten würde, dann kannst du mit einer FOR /D-Anweisung alle Unterverzeichnisse durchwackeln,
Skizze ungetestet:
- oder, falls nur Dateien, nicht aber die Verzeichnisse gelöscht werden sollen
Das "echo" nur zum erfolgten Testen des Batches.
Wenn es lüüpt, dann per SchTasks einplanen (siehe Beispiele über Forumssuche).
Grüße
Biber
wenn das Beispiel "D:\Scandata" gelten würde, dann kannst du mit einer FOR /D-Anweisung alle Unterverzeichnisse durchwackeln,
Skizze ungetestet:
::--- HauWochenScanDirsWech.cmd ---
@FOR /D %%i in (D:\Scandata\*) do Echo RD "%%i" /s /q
::--- HauWochenScanFilesWech.cmd ---
@FOR /D %%i in (D:\Scandata\*) do Echo Del "%%i\*.*" /s /q
Das "echo" nur zum erfolgten Testen des Batches.
Wenn es lüüpt, dann per SchTasks einplanen (siehe Beispiele über Forumssuche).
Grüße
Biber