sirheld
Goto Top

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:
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!

Content-Key: 19938

Url: https://administrator.de/contentid/19938

Printed on: April 18, 2024 at 09:04 o'clock

Member: sirheld
sirheld Nov 18, 2005 at 09:36:07 (UTC)
Goto Top
kann mir denn niemand weiterhelfen face-sad
Member: Biber
Biber Nov 18, 2005 at 10:55:58 (UTC)
Goto Top
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
Member: sirheld
sirheld Nov 18, 2005 at 16:30:49 (UTC)
Goto Top
hallo biber, vorerst bedanke ich mich mal für deine nachricht.

es exististieren 2 festplatten mit jeweils 4 ordnern:
Festplatte D: Cam1, Cam2, Cam3, Cam4
Festplatte F: Cam5, Cam6, Cam7, Cam8


In diesen werden täglich Ordner erstellt mit dem jeweiligen Datum: 20051118

Da die Speicherkapazität nur für 3-4 Tage ausreicht hört es auf neue Tage zu erstellen. Also
20051115
20051116
20051117
20051118

Nun würde ich gerne mit einem Tool täglich den am frühesten erstellten Ordner, in diesem Fall 20051115 löschen. Diesen Tool würde ich dann jeden Tag mit einem Task um 22:00 starten wollen, damit es am nächsten Tag für die nächsten Aufzeichnungen genügend Speicherplatz gibt.


Ich hoffe, dass ich mich jetzt besser ausdrücken konnte und danke dir nochmals.

Mfg
Member: Biber
Biber Nov 18, 2005 at 16:47:23 (UTC)
Goto Top
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
Member: sirheld
sirheld Nov 18, 2005 at 20:38:12 (UTC)
Goto Top
FORFILES -pD:\Cam1 -s -m*.* -d-3 -c"cmd /c if exist @path@RELPATH Rd @path@RELPATH /s /q"


das klingt eigentlich auch interessant, aber es geht irgendwie nicht.
ich sehe aber auch den fehler nicht.


Da Biber derzeit nicht online ist, könnte mir vielleicht jemand anderer weiterhelfen. Auf jeden Fall wäre ich sehr dankbar.


@Biber: Danke nochmals. Dir auch noch ein schönes Wochenende.
Member: Biber
Biber Nov 18, 2005 at 21:58:26 (UTC)
Goto Top
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 face-wink
Member: sirheld
sirheld Nov 18, 2005 at 23:01:08 (UTC)
Goto Top
Hallo Biber,

ich hätte nun mal eine Batch-Datei, die das Problem lösen dürfte, nur muss ich sie für jeden einzelnen ordner erstellen und jedes einzelne starten. Ich hoffe, dass der PC bei dieser Sache mithalten wird.

Den genaueren Inhalt der Batch-Datei kann ich dir erst morgen schicken, da ich diese in der Firma gespeichert habe.

Das einzige Problem ist jedoch, dass das Fenster nicht automatisch geschlossen wird.
Hab es mit exit und cls versucht, klappt aber nicht. Könntest du mir diesbezüglich irgendwie weiterhelfen?

So ähnlich habe ich es in der Firma versucht:
FORFILES -pD:\Cam1 -s -m*.* -d-3 -c"cmd /c if exist @path@RELPATH Rd @path@RELPATH /s /q"exit

-> Klappt leider nicht. Wo müsste ich das exit einfügen, damit es auch geht?


Vielen Dank nochmals.

LG
Member: Biber
Biber Nov 19, 2005 at 00:03:29 (UTC)
Goto Top
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
Member: sirheld
sirheld Nov 20, 2005 at 11:07:00 (UTC)
Goto Top
Hallo, hab mein ziel auf eine ganz biedere art und weise erreicht.

wusste bis gestern nicht, dass leere ordner keinen speicherplatz wegnehmen, auch nicht wenn man 10000 leere ordner hat.


deswegen habe ich das so eingestellt, dass dieses forfiles tool jeden abend die dateien vor 3 tagen erstellt wurden löscht. leider löscht es die ordner nicht gleichzeitig mit, aber nachdem diese mich sowieso keinen speicherplatz kosten und nicht so störend sind, kann ich die einmal im monat oder irgnendwann auch selbst löschen.


FORFILES -pD:\Cam1 -s -m*.* -d-3 -c"cmd /c del @File /s /q"


Trotzdem bedanke ich mich bei Biber für die herzliche Hilfeleistung und verbleibe

mfg