Hilfe bei Skript - wenn eine Datei Datum x hat - alle löschen
Hallo zusammen,
ich bräuchte mal Unterstützung. Ich brauche ein Skript/Batch, was in einem Ordner Dateien nach Erstellungsdatum überprüft. Ist eine Datei dabei, welches älter als X ist, sollen alle Dateien (egal wie alt) gelöscht werden.
ich habe mit
forfiles -p c:\test -m *.* -S -d -28 -c "cmd /c del 0x22@FILE0x22"
herumgespielt, habe es aber nicht geschafft wie gewünscht. Habe es auch nicht mit einer If Abfrage geschafft. hat vlt. jemand den entscheidenden Hinweis für mich?
System ist ein Server2016.
ich bräuchte mal Unterstützung. Ich brauche ein Skript/Batch, was in einem Ordner Dateien nach Erstellungsdatum überprüft. Ist eine Datei dabei, welches älter als X ist, sollen alle Dateien (egal wie alt) gelöscht werden.
ich habe mit
forfiles -p c:\test -m *.* -S -d -28 -c "cmd /c del 0x22@FILE0x22"
herumgespielt, habe es aber nicht geschafft wie gewünscht. Habe es auch nicht mit einer If Abfrage geschafft. hat vlt. jemand den entscheidenden Hinweis für mich?
System ist ein Server2016.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 359992
Url: https://administrator.de/forum/hilfe-bei-skript-wenn-eine-datei-datum-x-hat-alle-loeschen-359992.html
Ausgedruckt am: 21.04.2025 um 21:04 Uhr
9 Kommentare
Neuester Kommentar

System ist ein Server2016.
Powershell wäre hier dann doch angebrachter$ordner = 'C:\test'
if ((gci $ordner -File | ?{$_.CreationTime -lt (get-date).AddDays(-28)})){
remove-item "$ordner\*" -Force
}

Ich weis noch nicht ob ich über das Programm, worüber es gestartet wird, PS Skripte anhängen kann.
Powershell kannst du auch aus einer Batchdatei starten. oder den kompletten Befehl in eine Kommandozeile packen. Möglichkeiten sind hier vielfältig.Ich habe nun zusätzlich nach dem Parameter für das "Änderungsdatum" gesucht,
Oben $_.CreationTime durch $_.LastWriteTime ersetzen
Hallo
Bei mir funktioniert forfiles schon länger so (auf einem SBS 2011, sollte aber auch auf dem 2016 tun):
forfiles.exe /P "%windir%\System32" /M *.log /D -33 /C "CMD /C del @File && echo @path wird gelöscht" >>%Logfile%
Löscht zB alle Logfiles in %windir%\System32, die älter als 33 Tage sind
Zusätzlich /S würde noch alle Unterverzeichnisse in %windir%\System32 durchsuchen
Und das mit dem Echo schreibt mir die zu löschenden Dateien zusätzlich noch in ein Logfile
Gruss
Bei mir funktioniert forfiles schon länger so (auf einem SBS 2011, sollte aber auch auf dem 2016 tun):
forfiles.exe /P "%windir%\System32" /M *.log /D -33 /C "CMD /C del @File && echo @path wird gelöscht" >>%Logfile%
Löscht zB alle Logfiles in %windir%\System32, die älter als 33 Tage sind
Zusätzlich /S würde noch alle Unterverzeichnisse in %windir%\System32 durchsuchen
Und das mit dem Echo schreibt mir die zu löschenden Dateien zusätzlich noch in ein Logfile
Gruss
Zitat von @paddy89:
Danke. Aber da hast du meine Situation nicht verstanden. Wenn eine Datei, älter als zb. 33 tage ist, sollen alle Dateien, gleich welches Alter, gelöscht werden.
Dann musst Du die Batchdatei nur sinngemäß anpassen. Etwa so (ungetestet):Zitat von @Meierjo:
Löscht zB alle Logfiles in %windir%\System32, die älter als 33 Tage sind
Zusätzlich /S würde noch alle Unterverzeichnisse in %windir%\System32 durchsuchen
Und das mit dem Echo schreibt mir die zu löschenden Dateien zusätzlich noch in ein Logfile
Gruss
Löscht zB alle Logfiles in %windir%\System32, die älter als 33 Tage sind
Zusätzlich /S würde noch alle Unterverzeichnisse in %windir%\System32 durchsuchen
Und das mit dem Echo schreibt mir die zu löschenden Dateien zusätzlich noch in ein Logfile
Gruss
Danke. Aber da hast du meine Situation nicht verstanden. Wenn eine Datei, älter als zb. 33 tage ist, sollen alle Dateien, gleich welches Alter, gelöscht werden.
forfiles.exe /P "%windir%\System32" /M *.log /D -33 /C "CMD /C del *.* && echo @path wird gelöscht" >>%Logfile%
D.h. aus dem del @File habe ich ein del *.* gemacht.
Teste es mit einem Testverzeichnis und nicht in %windir%\System32!!!
Gruss Penny