Ordner mit Inhalt chronologisch löschen!
Hallo, ich hätte eine Frage:
Meine Kameras schicken automatisch Bilder an 2 Festplatten und sobald sie voll sind hören sie auf jegliche Aufzeichnungne zu machen.
Nun würde ich gerne wissen, wie ich mit einem BATCH oder VBS Bilder, die vor 3 Tagen aufgenommen wurden, löschen kann.
Ich habe mittlerweile 2 verschiedene Arten gefunden, diese löschen jedoch nicht die Ordner selbst sondern nur den Inhalt. Deswegen kann ich sie nicht verwenden, da ich jeden Tag eine neue Directory (Datum) in die BATCH oder VBS Datei eingeben müsste. Ich will aber, dass alles, was vor 3 Tagen erstellt werden automatisch gelöscht werden.
Nun sende ich euch die 2 Arten von Möglichkeitne, womit man nur die Dateien löschen kann:
BATCH:
VBS:
Ich hoffe, dass mir hier irgendwer weiterhelfen kann
und verbleibe mit freundlichen Grüßen!
Meine Kameras schicken automatisch Bilder an 2 Festplatten und sobald sie voll sind hören sie auf jegliche Aufzeichnungne zu machen.
Nun würde ich gerne wissen, wie ich mit einem BATCH oder VBS Bilder, die vor 3 Tagen aufgenommen wurden, löschen kann.
Ich habe mittlerweile 2 verschiedene Arten gefunden, diese löschen jedoch nicht die Ordner selbst sondern nur den Inhalt. Deswegen kann ich sie nicht verwenden, da ich jeden Tag eine neue Directory (Datum) in die BATCH oder VBS Datei eingeben müsste. Ich will aber, dass alles, was vor 3 Tagen erstellt werden automatisch gelöscht werden.
Nun sende ich euch die 2 Arten von Möglichkeitne, womit man nur die Dateien löschen kann:
BATCH:
FORFILES -pD:\Cam1 -s -m*.* -d-3 -c"cmd /c del 0x22@FILE0x22"
VBS:
Const myPath ="D:\"
Set FileObj = Createobject("Scripting.FileSystemObject")
zeit = 3
Dim FileName
For Each FileName In FileObj.GetFolder(myPath).Files
If DateDiff("d", Now, FileName.DateLastmodified) <= -3 Then
FileObj.DeleteFile myPath & FileName.Name , True
End If
Next
Ich hoffe, dass mir hier irgendwer weiterhelfen kann
und verbleibe mit freundlichen Grüßen!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 19938
Url: https://administrator.de/forum/ordner-mit-inhalt-chronologisch-loeschen-19938.html
Ausgedruckt am: 23.04.2025 um 21:04 Uhr
9 Kommentare
Neuester Kommentar
Moin sirheld,
bin nicht ganz sicher, was jetzt Deine geplante Strategie ist - sollen nun "Tagesordner" angelegt und gelöscht werden oder in Zukunft nicht mehr?
Falls es nur darum geht, die Ordner auch zu entsorgen - das kannst Du auch mit diesem ForFiles-Utitily.
FORFILES -pD:\Cam1 -s -m*.* -d-3 -c"cmd /c if exist @path@RELPATH Rd @path@RELPATH /s /q"
Sonst formulier bitte nochmal um, was jetzt Dein Ziel ist.
Manchmal etwas langsam im Begreifen
Biber
bin nicht ganz sicher, was jetzt Deine geplante Strategie ist - sollen nun "Tagesordner" angelegt und gelöscht werden oder in Zukunft nicht mehr?
Falls es nur darum geht, die Ordner auch zu entsorgen - das kannst Du auch mit diesem ForFiles-Utitily.
FORFILES -pD:\Cam1 -s -m*.* -d-3 -c"cmd /c if exist @path@RELPATH Rd @path@RELPATH /s /q"
Sonst formulier bitte nochmal um, was jetzt Dein Ziel ist.
Manchmal etwas langsam im Begreifen
Biber
Jepp, sirheld,
jetzt verstehe ich es eher.. (muss aber nicht an Dir liegen *gg)
Also, dieses Problem ließe sich prinzipiell natürlich wie oben skizziert angehen, aber wäre ja Unsinn. Die "ForFiles.exe" bringt hier ja keinen richtig nach vorn - die ist ja so holzig programmiert, dass die Verfasserin sicherlich gute Privatkontakte zur M$-Qualitätskontrolle haben muss. Egal. Die beiden Vokabeln "M$" und "Qualitätskontrolle" wollte ich jetzt eigentlich nicht in einem Satz bringen, sonst eskaliert dieser Thread wieder.
Es gab hier im Bereich Batch & Shell schon ein oder zweimal die gleiche Anforderung, für die ich dann einen Lösungsvorschlag mit reinen Batchmitteln (auf jeden Fall ohne Forfiles) gepostet hatte.
Habe jetzt auf die Schnelle nur einen davon gefunden: <a href= target="blank">bestimmten Ordner per Batch löschen</a>.
Lies Dich da mal ein - da müsste auch ein Link zum Vorgänger-Beitrag sein.
Falls Du damit nichts anfangen kannst - ich schau am WE noch mal rein ins Forum.
Erstmal schönes Wochenende.
Grüße Biber
jetzt verstehe ich es eher.. (muss aber nicht an Dir liegen *gg)
Also, dieses Problem ließe sich prinzipiell natürlich wie oben skizziert angehen, aber wäre ja Unsinn. Die "ForFiles.exe" bringt hier ja keinen richtig nach vorn - die ist ja so holzig programmiert, dass die Verfasserin sicherlich gute Privatkontakte zur M$-Qualitätskontrolle haben muss. Egal. Die beiden Vokabeln "M$" und "Qualitätskontrolle" wollte ich jetzt eigentlich nicht in einem Satz bringen, sonst eskaliert dieser Thread wieder.
Es gab hier im Bereich Batch & Shell schon ein oder zweimal die gleiche Anforderung, für die ich dann einen Lösungsvorschlag mit reinen Batchmitteln (auf jeden Fall ohne Forfiles) gepostet hatte.
Habe jetzt auf die Schnelle nur einen davon gefunden: <a href= target="blank">bestimmten Ordner per Batch löschen</a>.
Lies Dich da mal ein - da müsste auch ein Link zum Vorgänger-Beitrag sein.
Falls Du damit nichts anfangen kannst - ich schau am WE noch mal rein ins Forum.
Erstmal schönes Wochenende.
Grüße Biber
Hmmmm, sirheld,
habs eben auch noch mal probiert.. ForFiles ist für den Zweck nicht so gut verwendbar.
1. Es hängt an die Variable @relpath einfach einen Punkt an (wozu auch immer *kopfschüttel*) und schlimmer
2. Forfiles hat offensichtlich den Ordner @relpath schlauerweise selbst im Zugriff.. das heißt, wenn aus dem aktiven Prozess ForFiles.exe ein anderer Prozess aufgerufen wird, ist der Ordner @relpath (also "D:\Cam1.") tabu. Es kommt die Meldung:
"Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird." Wunderwelt Windows.
Mein Credo: Lass uns die ForFiles aus dem Spiel lassen und das ganze ähnlich wie bei domonomie in dem obigen Thread machen.
Es sei denn, jemand anderes findet durch Spielen mit der ForFiles noch eine gültige Syntax heraus.
MfG Biber, der die Programmiererin von ForFiles gerne auf ein Becks einladen würde
habs eben auch noch mal probiert.. ForFiles ist für den Zweck nicht so gut verwendbar.
1. Es hängt an die Variable @relpath einfach einen Punkt an (wozu auch immer *kopfschüttel*) und schlimmer
2. Forfiles hat offensichtlich den Ordner @relpath schlauerweise selbst im Zugriff.. das heißt, wenn aus dem aktiven Prozess ForFiles.exe ein anderer Prozess aufgerufen wird, ist der Ordner @relpath (also "D:\Cam1.") tabu. Es kommt die Meldung:
"Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird." Wunderwelt Windows.
Mein Credo: Lass uns die ForFiles aus dem Spiel lassen und das ganze ähnlich wie bei domonomie in dem obigen Thread machen.
Es sei denn, jemand anderes findet durch Spielen mit der ForFiles noch eine gültige Syntax heraus.
MfG Biber, der die Programmiererin von ForFiles gerne auf ein Becks einladen würde
Auch wenn ich mich wiederholen sollte, sirheld,
die "ForFiles.exe" macht die Sache nicht einfacher. So, wie sie offensichtlich implementiert ist, öffnet sie eine weitere CMD-Shell in genau diesem Verzeichnis @relpath.
Das heißt, dieses Verzeichnis lässt sich nicht löschen, weil der Prozess "ForFiles" in diesem Verzeichnis steht.
Abgesehen davon ist die Mimik ja um die Ecke gedacht...eigentlich war ja der Ausgangspunkt, dass die ForFiles alle Dateien löscht, die älter als drei Tage sind. So unsauber, wie die Prüfung jetzt ist in dieser einen Zeile, würde das ganze Verzeichnis auch gelöscht werden, wenn nur eine einzige Datei enthalten ist, die dieses Kriterium erfüllt. Und 1498 andere Dateien erst 10 Minuten alt sind.
Dann lieber Verzicht auf Forfiles und saubere Trennung:
1. Schleife über die 2 Laufwerke x je 4 Ablageordner = 8 Verzeichnisse (können ja in deiner Dateiliste stehen, ist also variabel und wartbar genug)
2. In jedem dieser Verzeichnisse D:\CamX und F:\CamY
2a. für alle Verzeichnisse mit der Namenskonvention "JJJJMMTT" die drei neuesten feststellen (aufgrund Anlagedatum oder Dateiinhalt)
2b. Alle älteren wegknallen (sowohl Dateien und Unterverzeichnisse).
2c. Datum und Zeit und "Alles prima" in eine Logdatei schreiben... oder eben Datum und Zeit und "Zu kurz gedacht..Fehler da und dort."
Und da seh ich keine Stelle, an der ich die ForFiles brauchen kann. Du darfst Dir wünschen, ob wir das in *.vbs oder als *.bat durchziehen - ist ja beides fast fertig. Fehlt ja jeweils nur noch die Schleife drumherum und das Löschen der Alt-Verzeichnisse.
Auf gar keinen Fall wird es so enden, dass Du für jeden lumpigen Ordner einen eigenen Batch anpassen musst.. *lacht* .. dann bin ich ruckzuck meinen HalbMod-Job los hier im Forum.
So, Schicht für heute
Frank
die "ForFiles.exe" macht die Sache nicht einfacher. So, wie sie offensichtlich implementiert ist, öffnet sie eine weitere CMD-Shell in genau diesem Verzeichnis @relpath.
Das heißt, dieses Verzeichnis lässt sich nicht löschen, weil der Prozess "ForFiles" in diesem Verzeichnis steht.
Abgesehen davon ist die Mimik ja um die Ecke gedacht...eigentlich war ja der Ausgangspunkt, dass die ForFiles alle Dateien löscht, die älter als drei Tage sind. So unsauber, wie die Prüfung jetzt ist in dieser einen Zeile, würde das ganze Verzeichnis auch gelöscht werden, wenn nur eine einzige Datei enthalten ist, die dieses Kriterium erfüllt. Und 1498 andere Dateien erst 10 Minuten alt sind.
Dann lieber Verzicht auf Forfiles und saubere Trennung:
1. Schleife über die 2 Laufwerke x je 4 Ablageordner = 8 Verzeichnisse (können ja in deiner Dateiliste stehen, ist also variabel und wartbar genug)
2. In jedem dieser Verzeichnisse D:\CamX und F:\CamY
2a. für alle Verzeichnisse mit der Namenskonvention "JJJJMMTT" die drei neuesten feststellen (aufgrund Anlagedatum oder Dateiinhalt)
2b. Alle älteren wegknallen (sowohl Dateien und Unterverzeichnisse).
2c. Datum und Zeit und "Alles prima" in eine Logdatei schreiben... oder eben Datum und Zeit und "Zu kurz gedacht..Fehler da und dort."
Und da seh ich keine Stelle, an der ich die ForFiles brauchen kann. Du darfst Dir wünschen, ob wir das in *.vbs oder als *.bat durchziehen - ist ja beides fast fertig. Fehlt ja jeweils nur noch die Schleife drumherum und das Löschen der Alt-Verzeichnisse.
Auf gar keinen Fall wird es so enden, dass Du für jeden lumpigen Ordner einen eigenen Batch anpassen musst.. *lacht* .. dann bin ich ruckzuck meinen HalbMod-Job los hier im Forum.
So, Schicht für heute
Frank