Batch Skript erweitern
Hallo zusammen,
ich hänge jetzt schon seid Tagen dieses Skript zu erweitern, kann mir evtl jemand weiterhelfen?
Er soll Ordner und Dateien löschen, die Älter als 14 Tagen sind.
Auch wenn im Ordner neue Dateien angelegt werden, sollen die restlichen Dateien im Ordner gelöscht werden, die älter als 14 Tagen sind.
Zum eigendlichen Thema:
Ich möchte gerne ein Log erstellen, der mir anzeigt, was gelöscht wurde inkl Datum & Zeit ist das möglich?
ich hänge jetzt schon seid Tagen dieses Skript zu erweitern, kann mir evtl jemand weiterhelfen?
@echo off
echo ----------------------------------------------
echo Dateien älter als 14 Tage werden gelöscht
echo ----------------------------------------------
Forfiles /p D:\IT_test /d -1 -c "cmd /c echo @File>>D:\IT_test\log\Log_%date%_geloescht.txt"
Forfiles /P D:\IT_test /D -14 /C "cmd /c rmdir /q /s @path "
Forfiles /p D:\IT_test /s /d -14 /c "cmd /c rd @file /s /q"
Forfiles /p D:\IT_test /s /d -14 /c "cmd /c del /s /q @path"
echo ----------------------------------------------
echo Dateien älter als 14 Tage wurden gelöscht
echo ----------------------------------------------
Er soll Ordner und Dateien löschen, die Älter als 14 Tagen sind.
Auch wenn im Ordner neue Dateien angelegt werden, sollen die restlichen Dateien im Ordner gelöscht werden, die älter als 14 Tagen sind.
Zum eigendlichen Thema:
Ich möchte gerne ein Log erstellen, der mir anzeigt, was gelöscht wurde inkl Datum & Zeit ist das möglich?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 328695
Url: https://administrator.de/contentid/328695
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
1 Kommentar
Hallo,
Und was bedeutet für dich und hier jetzt Weiterhelfen?
Das machste als erste mal weg, damit du siehst was passiert.
Oder wie dir schon letztens genannt - Powershell. So wir dir auch schon genannt wurde dein Echo OFF erstmal nicht zu verwenden...
Gruß,
Peter
Und was bedeutet für dich und hier jetzt Weiterhelfen?
@echo off
Forfiles /p D:\IT_test /d -1 -c "cmd /c echo @File>>D:\IT_test\log\Log_%date%_geloescht.txt"
Hier wird dir eine Liste erstellt wo du siehst welche Dateien (ohne Unterverzeichnisse) in deiner Auswahl (d -1) enthalten sind. Da sind auch andere Dateien drin? Dann passt deine Auswahl nichtForfiles /P D:\IT_test /D -14 /C "cmd /c rmdir /q /s @path "
Hier werden Verzeichnisse und Dateien entfernt sofern deine Auswahlkriterien passen. Durch dein /s werden auch Unterverzeichnisse entfernt und durch dein /q auch ohne nachfrage. Liefert aber ein "Der Verzeichnissname ist ungültig" da du Dateien und nicht Ordner löschen willst. RMDIR /? hilft weiter.Forfiles /p D:\IT_test /s /d -14 /c "cmd /c rd @File /s /q"
Wie oben. Ein RD ist gleich ein RMDIR. Ersetze in mal dein rd bzw. rmdir durch echo und schaue dir an was ein @path und ein @files unterscheidet.Forfiles /p D:\IT_test /s /d -14 /c "cmd /c del /s /q @path"
Hier wird n un tatsächlich deiner Auswahl gelöscht. Ein Del akzeptiert eben auch Dateinamen.Er soll Ordner und Dateien löschen, die Älter als 14 Tagen sind.
Nur der erste ForFiles und der letzte ForFiles tun etwas sinnvolles. Die anderen laufen in Fehler rein.Ich möchte gerne ein Log erstellen, der mir anzeigt, was gelöscht wurde inkl Datum & Zeit ist das möglich?
Dein erstes ForFiles sollte dann auch die Kriterien der anderen ForFiles entsprechen. Datum und Uhrzeit vom Löschen? So jedenfalls nicht. Da wirst du dir wohl eine Schleifen bauen müssen (FOR /?), jede Datei / Ordner einzelen abfrühstücken bzw löschen und dann in dein Protokoll notieren wan wer was bevor es nächsten Datensatz geht. Dein Erstes ForFiles liefert dir doch schon eine Liste der zu löschenden Dateien / Order wenn du dort @path anstelle von @files verwendest.Oder wie dir schon letztens genannt - Powershell. So wir dir auch schon genannt wurde dein Echo OFF erstmal nicht zu verwenden...
Gruß,
Peter