Batch Datei zum löschen von Dateien die älter als 10 Tage sind?
ich brauche eine Batch Datei die in einem bestimmten Verzeichnis alle .zip Ordner löscht die älter als 5 Tage sind.
Mein Ansatz:
@echo off & setlocal EnableDelayedExpansion cls for /R %system32% %%f in (*.zip) do ( echo %%f ) REM pause
set "Typ=%txt%" set "Verzeichnis=%system32%" set "Heute=%date%" set "x=^1^^1^^0^"
echo. echo Heutiges Datum : "%Heute%" echo.--------------------------- echo.
pushd %Verzeichnis%
for /R %system32% %%f in ("*.%Typ%") do ( set Datei=%typ% set Datum=%%~ti
set Datum=!Datum:~,-6!
echo Datei: !Datei! mit Datum: !Datum!
if "!Heute!"=="!Datum!" (
echo ist aktuell
echo.
) else (
echo ist älter als 5 Tage!
echo.
)
) pause
3 Antworten
Mit dir kann man zwar nach Datum sortieren aber einschränken geht nicht. Den einzigen Befehl den ich in Erinnerung hab, der mit Dateien und Zeitspanne gleichzeitig arbeitet ist robocopy.
Mein Ansatz wäre jetzt alle *.zip Dateien, die älter als 5 Tage sind in einen extra Ordner zu verschieben (dann könnte der User auch noch schauen ob er doch noch was davon braucht, praktisch ein Papierkorb) und dessen Inhalt dann zu löschen.
@echo off set "folder=%userprofile%\ZipPapierkorb\" if not exist %folder%path.txt ( set /p "cd=Bitte Pfad oder Laufwerk eingeben: >" && echo %cd% > %folder%path.txt ) else ( set /p cd=<%folder%path.txt ) if not exist %folder%info.txt ( mkdir %folder% echo Dieser Ordner enthält alle zip-Ordner die aelter als 5 Tage sind. > %folder%info.txt ) robocopy %cd% %folder% *.zip /E /MOVE /MINAGE:5 echo .zip Dateien in %folder% verschoben. choice /m "Alle loeschen?" if %errorlevel% EQU 1 ( for %%D in (%folder%*.zip) do del /f /s /q %%D )
Habs nicht getestet, schau mal obs klappt ;)
~Tim
statt cd sollte man wohl lieber einen anderen Variablennamen verwenden, hab ich nicht drangedacht
Guter Ansatz, ich kann dir jetzt nicht sagen ob die Batch fehlerfrei ist oder so funktioniert. Aber du solltest sie dann in den Ordner Shell:Startup legen, dass die auch bei jedem Systemstart ausgeführt wird, sonst müsstest du das ja jedes mal manuell starten.
FORFILES /P c:\temp /D -5 /C "cmd /c echo @path"
Teste und passe an.
Dann ersetze echo durch del /q.
Ich hatte eigentlich vor die Batch Datei im Task Scheduler in Windows einzubinden, sodass sie immer automatisch ausgeführt wird