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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 196723
Url: https://administrator.de/contentid/196723
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
4 Kommentare
Neuester Kommentar
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 "
Grüße
bastla
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
Hallo yakini!
Etwa so:
Grüße
bastla
[Edit] Da Du schon die Variable %Datum% verwendest, auf %DatumAlt% geändert [/Edit]
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%
bastla
[Edit] Da Du schon die Variable %Datum% verwendest, auf %DatumAlt% geändert [/Edit]