yakini
Goto Top

Ordner mit verschiedenen Namen per Batchdatei löschen

Hi Zielgruppe...

ich habe ein kleines Problemchen mit einer Batchdatei, bzw. mir fehlt die richtige Idee.
Vielleicht kann jemand helfen.


Folgendes ist vorhanden:

Mehrere Überwachungskameras schreiben sekündlich ein Bild per FTP auf ein Laufwerk.

Bitte nicht über Sinn oder Unsinn dieser Verfahrensweise diskutieren, die ist wie sie ist und soll oder/und kann auch nicht verändert werden.

Es existiert eine Batchdatei, die die Fotos aus einem Ordner in mehrere Ordner sortiert. Sortiert wird nach Kameraname und Datum. Es existiert also danach für jeden Tag ein Ordner, der z.B. 2013-01-09 heißt.
In einem zweiten Schritt werden die Bilder, die älter als vier Tage sind per Batch mit einem kleinem Programm (delage) gelöscht.

Übrig bleiben dann leere Ordner für jeden Tag.

Gesucht wird eine Lösung, die in meine Batchs passt, die nicht nur die Dateien löscht, die älter als vier tage sind, sondern auch die danach leeren Ordner.

Bin für jede Idee dankbar, auch wenn sich noch anders in den Batchs verändern lässt.

Hier meine Batchdateien:

sortierbatch


set "Quelle=E:\cams\camsilver"

set "Ziel=E:\cams\nach_datum\camsilver"

set "Typ=.jpg"

set "Datum=%date%"

for /f "tokens=1-3 delims=." %%a in ("%Datum%") do set "ZielOrdner=%Ziel%\%%c-%%b-%%a"

md "%Zielordner%" 2>nul

pushd "%Quelle%"

for /f "tokens=1-3*" %%a in ('dir /a-d /tc *%Typ%^|findstr /i /e "\%Typ%"') do if "%%a"=="%Datum%" move "%%d" "%Zielordner%"


del /Q E:\cams\camsilver\*.*


set "Quelle=E:\cams\camblack"

set "Ziel=E:\cams\nach_datum\camblack"

set "Typ=.jpg"

set "Datum=%date%"

for /f "tokens=1-3 delims=." %%a in ("%Datum%") do set "ZielOrdner=%Ziel%\%%c-%%b-%%a"

md "%Zielordner%" 2>nul

pushd "%Quelle%"

for /f "tokens=1-3*" %%a in ('dir /a-d /tc *%Typ%^|findstr /i /e "\%Typ%"') do if "%%a"=="%Datum%" move "%%d" "%Zielordner%"


del /Q E:\cams\camblack\*.*


set "Quelle=E:\cams\camviolett"

set "Ziel=E:\cams\nach_datum\camviolett"

set "Typ=.jpg"

set "Datum=%date%"

for /f "tokens=1-3 delims=." %%a in ("%Datum%") do set "ZielOrdner=%Ziel%\%%c-%%b-%%a"

md "%Zielordner%" 2>nul

pushd "%Quelle%"

for /f "tokens=1-3*" %%a in ('dir /a-d /tc *%Typ%^|findstr /i /e "\%Typ%"') do if "%%a"=="%Datum%" move "%%d" "%Zielordner%"

del / Q E:\cams\camviolett\*.*


popd

löschbatch


DelAge32 "E:\cams\nach_datum\camblack\*.*" 4 /recurse
DelAge32 "E:\cams\nach_datum\camsilver\*.*" 4 /recurse
DelAge32 "E:\cams\nach_datum\camviolett\*.*" 4 /recurse


danke schon mal für Ideen

Content-ID: 196723

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

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

bastla
bastla 10.01.2013 um 08:06:52 Uhr
Goto Top
Hallo yakini!

Was für "gestern" (also -1 Tage) funktioniert, wird auch für einen anderen Zeitraum anzupassen sein - und wenn Du dann das Datum mit dem Stichtag ermittelt hast, kannst Du in einer Schleife einfach mit "lss" oder "leq" vergleichen und das Löschen der Ordner ganz ohne "delage" (nämlich mit einem simplen "rd /s /q") durchführen ...

Grüße
bastla
yakini
yakini 10.01.2013 um 18:12:12 Uhr
Goto Top
..kannst du mir mal eine Zeile als Beispiel schreiben? Ich seh irgendwie den Wald vor lauter Bäumen nicht...
bastla
bastla 10.01.2013 aktualisiert um 18:21:06 Uhr
Goto Top
Hallo yakini!

Etwa so:
echo WScript.Echo DateAdd("d",-4, Date())>%temp%\Vor4Tagen.vbs  
for /f "tokens=1-3 delims=." %%a in ('cscript //nologo %temp%\Vor4Tagen.vbs') do set "DatumAlt=%%c-%%b-%%a"  
echo %DatumAlt%
Grüße
bastla

[Edit] Da Du schon die Variable %Datum% verwendest, auf %DatumAlt% geändert [/Edit]
yakini
yakini 10.01.2013 um 18:36:54 Uhr
Goto Top
..es dämmert.... werd nachher gleich anpassen und testen...

danke