michi-ffm
Goto Top

Fileserver Daten älter als 14 Tage löschen!

Hallo Zusammen,

hat jemand evtl einen Lösungsvorschlag für mein Projekt?
Ich bin dabei einen Fileserver aufzusetzen und möchte nun

z.b. das Dateien die älter als 14(beliebig) Tagen gelöscht werden sollen.

Ich habe hierzu eine Batch erstellt :

@echo off
echo ----------------------------------------------
echo    Dateien älter als 14 Tage werden gelöscht
echo ----------------------------------------------
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 ----------------------------------------------

Sobald ich jedoch ein aktuellen Ordner habe, mit alten Dateien darin, sollten er diese eigentlich auch löschen, was er leider nicht tut.
Kann mir hierzu jemand evtl einen Lösungsvorschlag geben?

Vielen Dank

LG Mike

Content-ID: 328028

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

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

GuentherH
GuentherH 31.01.2017 um 16:26:34 Uhr
Goto Top
Versuche einemal "cmd /c del @File"

LG Günther
rudeboy
rudeboy 31.01.2017 um 16:53:35 Uhr
Goto Top
Hi!

Hatte das so ähnlich:
Forfiles /p E:\Ordner\ /m *.tib /d -35 -c "cmd /c echo @File>>E:\Ordner\TIBs_am_%date%_geloescht.txt"
Forfiles /p E:\Ordner\ /m *.tib /d -35 -c "cmd /c del @File"

In der ersten Zeile erstellt die Batch jedesmal eine txt-Datei mit Datum und drin steht welche Dateien gelöscht wurden, zweite Zeile der eigentliche Löschvorgang.
Gelöscht werden in meinem Beispiel Acronis tib-Dateien.

Gruß, rudeboy
Chonta
Chonta 31.01.2017 um 17:03:56 Uhr
Goto Top
Hallo,

warum sollte man auf einem Fileserver Dateien löschen wollen die älter als 14 Tage sind?
Das führt den Sinn eines Fileservers schon fast ad Absurdung.
Vor allem sollte nicht das erstelldatum ausschlaggebend sein, sondern die letzte Verwendung.
Was sind denn die Anforderungen? Ich bin mir sicher da läßt sich was besseres finden.

Selbst wenn es sich um eine Freigabe handelt, auf der sich Backups tummeln, sollten die Backupjobs das löschen der Altdaten übernehmen, nachdem das aktuelle Backup angelegt wurde.

Gruß

Chonta
GuentherH
GuentherH 31.01.2017 um 18:02:41 Uhr
Goto Top
warum sollte man auf einem Fileserver Dateien löschen wollen die älter als 14 Tage sind?

z.B. LogFiles usw.

LG Günther
132272
132272 31.01.2017 aktualisiert um 18:37:26 Uhr
Goto Top
Das is was für'n Azubi am ersten Ausbildungstag face-wink
gci 'd:\IT_test' -recurse | ?{!$_.PSIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-14)} | del -force  


Gruß
Pjordorf
Pjordorf 31.01.2017 um 18:56:43 Uhr
Goto Top
Hallo,

Zitat von @michi-ffm:
was er leider nicht tut.
Sondern? Was tut er dann Kopieren, vervielfältigen, umbenennen, oder einfach nichts? Definiere mal dein nicht tut. Mit welchen Rechten bzw. Benutzerkontext soll deine Bacht denn laufen? Kann es sein das du erst deine Dateien löschen musst bevor es an die Ordner geht? Mach mal dein @echo OFF raus und schau was dir hingeschrieben wird. Und nachdem deine Dateien (Zeule 7) erfolgreich gelöscht wurden hast du natürlich für deine Zeile 5 nunmehr keine Daten welche deine Kriterien erfüllen, somit läuft das nun ins leere...

Deine Batch tut schon etwas, nur ob es das ist was du dir vorstellst?

Gruß,
Peter
departure69
departure69 01.02.2017 um 07:23:26 Uhr
Goto Top
Hallo.

Es gibt ein Kommandozeilentool, das genau das macht, was Du möchtest. Vielleicht siehst Du Dir mal an, wie dieses Tool vorgeht und arbeitet, das Tool heißt "delage32":

http://www.horstmuc.de/wbat32d.htm


Viele Grüße

von

departure69
michi-ffm
michi-ffm 01.02.2017 aktualisiert um 08:46:38 Uhr
Goto Top
@rudeboy Das hat mir sehr geholfen Vielen lieben Dank!
Forfiles /p E:\Ordner\ /m *.tib /d -35 -c "cmd /c echo @File>>E:\Ordner\TIBs_am_%date%_geloescht.txt"  
Forfiles /p E:\Ordner\ /m *.tib /d -35 -c "cmd /c del @File"  

Wie bekomme ich jetzt nur noch hin das er auch Ordner löscht?
Der löscht mir nur die Dateien im Ordner.

Habe es jetzt so gelöst:
forfiles /p C:\Users\Michael\Desktop\testdaten\  /d -1 -c "cmd /c echo @File>>C:\Users\Michael\Desktop\testdaten\Log_%date%_geloescht.txt"  
forfiles /p C:\Users\Michael\Desktop\testdaten /D -14 /C "cmd /c rmdir /q /s @path "  
forfiles /p C:\Users\Michael\Desktop\testdaten /s /d -14 /c "cmd /c rd @file /s /q"  
forfiles /p C:\Users\Michael\Desktop\testdaten /s /d -14 /c "cmd /c del /s /q @path"  

Hat jemand evtl Verbesserungsvorschläge am Code?
Kann man den Log statt in einer Txt zuschreiben, lieber per Mail versenden?
MaceWindu
MaceWindu 02.02.2017 um 10:33:26 Uhr
Goto Top
Hallo,

Kann man den Log statt in einer Txt zuschreiben, lieber per Mail versenden?
"smtpsend" kann das. Das verschickt den Inhalt einer z.B. Logdatei in das Textfeld einer E-Mail. Bau diese Befehlszeile in dein Script ein:
smtpsend.exe -f[Absender] -t[Empfänger] -h[Mailserver] -s[Betreff] -i[Datei]


... Tool heißt "delage32":
Ich schließe mich der Meinung von departure69 an. Hatte ich schon im Einsatz, tut was es machen muss.

LG
Pjordorf
Pjordorf 02.02.2017 um 12:18:48 Uhr
Goto Top
Hallo,

Zitat von @MaceWindu:
"smtpsend" kann das.
Oder den Klassiker BLAT https://sourceforge.net/projects/blat/

Gruß,
Peter
132272
132272 02.02.2017 aktualisiert um 12:23:55 Uhr
Goto Top
Zitat von @Pjordorf:
Oder den Klassiker BLAT https://sourceforge.net/projects/blat/
Bordmittel gehen natürlich auch immer ...
powershell -Executionpolicy ByPass -Command "Send-MailMessage -from user@domain.de -to user@domain.de -Subject 'Log' -Attachments 'C:\Logdatei.txt' -SmtpServer 'smtp.domain.de' -UseSSL -Credential (New-Object PSCredential('USERNAME',(ConvertTo-SecureString 'PASSWORD' -AsPlainText -Force)))"