michi-ffm
Goto Top

Batch Skript erweitern

Hallo zusammen,

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?

Content-Key: 328695

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

Printed on: April 18, 2024 at 20:04 o'clock

Member: Pjordorf
Pjordorf Feb 07, 2017 at 15:49:42 (UTC)
Goto Top
Hallo,

Zitat von @michi-ffm:
jemand weiterhelfen?
Und was bedeutet für dich und hier jetzt Weiterhelfen?

@echo off
Das machste als erste mal weg, damit du siehst was passiert.

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 nicht

Forfiles /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