Jump to content

Ordner mit Batch nach xx Tagen löschen.


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich habe jetzt schon recht viel gesucht und auch schon viele Sachen getestet aber irgendwie funktioniert keines von diesen ganzen Scripten. Ich möchte eigentlich nur eine Batch Datei, welche mir Ordner löscht die älter sind als 14 Tage.

Bitte schickt mir keine Links mit irgendwelchen Tools, ich habe schon alles probiert was ich selbst mit 4 Stunden googlen gefunden habe. Vielleicht hat aber jemand selbst so eine Batch Datei im Einsatz wo er weiß das die auch wirklich funktioniert.

 

Danke

Gruß Braintee

Link zu diesem Kommentar

Hallo mkeil,

 

danke für Deine Antwort. Ich habe allerdings ein Windows 2003 Server und müsste dann wahrscheinlich erst die Powershell installieren damit ich Dein Script nutzen kann. Das nächste Problem ist, das ich das unten stehende zwar grob verstehe aber nicht weiß wie ich jetzt weitermachen könnte.

Ich denke der Weg würde schon wieder in Richtung, ich habe keine Ahnung aber versuche mir das mal anzueignen gehen. Dieser Weg ist ja grundsätzlich nicht schlecht aber nach mehreren Stunden erfolgreichen probieren und testen suche ich jetzt einfach etwas fertiges. Ich denke ihr könnt das verstehen.

 

Für alle die schon was fertiges im Einsatz haben immer her damit. Ein fertiges VBS geht natürlich auch aber einzelne Zeilen wo sozusagen der Anfang gemacht ist damit komme ich wie gesagt nicht richtig klar. Für alle die jetzt vielleicht meinen ich will einfach nur ne Lösung ohne vorher selbst geschaut zu haben, denen kann ich nur sagen, ich habe geschaut und nichts gefunden, was auch wirklich funktioniert.

 

Gruß Braintee

Link zu diesem Kommentar

Sollen die Ordner nach "Datum der Erstellung" oder "Datum der letzen Änderung" aussortiert werden?

Sollen die kpl. Ordner, unabhängig davon, wie alt die enthaltenen Dateien sind, gelöscht werden?

 

Hier ein VB-Script, das die Ordner nach "Datum der Erstellung" kpl. löscht:


strRootFolder = Inputbox("Bitte Startverzeichnis eingeben:")
if Trim(strRootFolder) <> "" then
 Set fso = CreateObject("Scripting.FileSystemObject")
 Set folder = fso.GetFolder(strRootFolder)

 'Durchlaufe alle Unterverzeichnisse
 for each subfolder in folder.subfolders
   KillFolderSub subfolder
 next

 MsgBox "Fertig"
End if

Sub KillfolderSub(objFolder)

 'Durchlaufe alle Unterverzeichnisse
 for each subfolder in objfolder.subfolders
   KillFolderSub subfolder
 next

 'Wenn Ordner vor mehr als 14 Tagen erstellt wurde...
 if objFolder.datecreated < (Date - 14) then

   'Alle Dateien im Ordner löschen
   for each file in objfolder.Files
     fso.DeleteFile(file.Path)
   next

   'Ordner löschen
   fso.DeleteFolder(objFolder.Path)
 end if

End Sub

 

... allerdings eine "Grobfassung". Könnte bei Bedarf etwas verfeinert werden.

 

Übrigens: Es reicht nicht, "datecreated" durch "datelastmodified" zu ersetzen, wenn das Änderungsdatum gewünscht wird, da diese Änderungsdatum sich auf das aktuelle Datum ändert, wenn in Unterordnern Dateien gelöscht werden!

Link zu diesem Kommentar

Hallo,

 

@cybquest

 

Habe Dein Script mal probiert bekomme allerdings die Fehlermeldung.

 

Zeile 22:

Zeichen 3:

Fehler Objekt erfoderlich:'objFolder'

Code:800A01A8

 

Ich weiß jetzt nicht genau wo da der Fehler liegt aber vielleicht weißt Du das ja.

 

@humpi

 

Das Tool habe ich natürlich probiert aber damit kann man keine Ordner löschen. Aber trotzdem danke für den Tipp.

 

Gruß Braintee

Link zu diesem Kommentar

Sorry, mein Fehler. Nu sollte es laufen...

strRootFolder = Inputbox("Bitte Startverzeichnis eingeben:")
if Trim(strRootFolder) <> "" then
 Set fso = CreateObject("Scripting.FileSystemObject")
 Set ofolder = fso.GetFolder(strRootFolder)

 'Durchlaufe alle Unterverzeichnisse
 for each folder in ofolder.subfolders
   KillFolderSub folder
 next

 MsgBox "Fertig"
End if

Sub KillfolderSub(objFolder)

 'Durchlaufe alle Unterverzeichnisse
 for each subfolder in objfolder.subfolders
   KillFolderSub subfolder
 next

 'Wenn Ordner vor mehr als 14 Tagen erstellt wurde...
 if objFolder.datecreated < (Date - 14) then

   'Alle Dateien im Ordner löschen
   for each file in objfolder.Files
     fso.DeleteFile(file.Path)
   next

   'Ordner löschen
   fso.DeleteFolder(objFolder.Path)
 end if

End Sub

Link zu diesem Kommentar

Hallo,

 

@Cybquest

 

ich habe das Script jetzt getestet und es läuft. Ich wollte jetzt mal selbständig das Script so ändern das ich einfach den pfad fest vorgebe um später das ganze als geplanten Task laufen lassen zu können. Klar hat natürlich nicht funktioniert. Ich habe einfach mal den Pfad oben reingeschrieben und die Inputbox raugelöscht. Er bringt mir zwar keine Fehlermeldung aber funktionieren will es auch nicht. Weiterhin habe ich die Message Box entfernt da ich diese ja dann nicht mehr brauche wenn es funktioniert. Hast Du vielleicht nochmal eine Minute um mir zu sagen was ich falsch gemacht habe ? Danke

 

 

@humpi

 

also ich meine das ich auch sämtliche Schalter versucht habe aber Ordner löschen bzw. Unterordner das hat nicht funktioniert. Wenn Du sagst das es bei Dir funktioniert, kannst Du mir dann mal deine Komandozeile schicken womit Du das machst ?

 

 

@Dukel

 

Danke ist nett gemeint aber ich bin "Programmier bzw. Scripttechnisch" nicht so fit.

 

 

Gruß Braintee

Link zu diesem Kommentar

Hallo humpi,

 

 

Hier mal ein Auszug von der Homepage wo DelAge beschrieben wird.

 

Delage32 deletes files, and optionally removes empty folders. Delage32 was not designed to delete directory structures depending on the age of the folder, regardless of the age of the files inside.

 

Ich habe es dennoch mal testweise versucht und mit Preview die Ordner und Dateien angeschaut welche er löschen würde. Das was ich gelöscht haben möchte ist nicht dabei. Es wird funktioniert so also nicht.

 

Gruß Braintee

Link zu diesem Kommentar
Hast Du vielleicht nochmal eine Minute um mir zu sagen was ich falsch gemacht habe ?

 

Da Du den geänderten Code hier nicht reingeschreiben hast, kann ich Dir schwer sagen, was DU falsch gemacht hast ;)

 

Wenn der Pfad fest rein kommt, kann auch der "If..."-Teil weg.

So sollte es gehen:

strRootFolder = "C:\MeinOrdner"

Set fso = CreateObject("Scripting.FileSystemObject")
Set ofolder = fso.GetFolder(strRootFolder)

'Durchlaufe alle Unterverzeichnisse
for each folder in ofolder.subfolders
 KillFolderSub folder
next


Sub KillfolderSub(objFolder)

 'Durchlaufe alle Unterverzeichnisse
 for each subfolder in objfolder.subfolders
   KillFolderSub subfolder
 next

 'Wenn Ordner vor mehr als 14 Tagen erstellt wurde...
 if objFolder.datecreated < (Date - 14) then

   'Alle Dateien im Ordner löschen
   for each file in objfolder.Files
     fso.DeleteFile(file.Path)
   next

   'Ordner löschen
   fso.DeleteFolder(objFolder.Path)
 end if

End Sub 

Link zu diesem Kommentar

Hallo Cybquest,

 

fast perfekt. Erstmal Danke. Er löscht jetzt das was ich möchte. Ich möchte das Script eventuell universeller einsetzten und vielleich auch mal Ordner löschen wo Setup.exe Dateien oder sonstige Systemdateien enthalten sind.

Er bricht bei diesen Dateien ab und bringt einen Laufzeitfehler. Was auch noch gut wäre wenn man alles was er gelöscht hat in eine Log Datei schreiben könnte. Ich weiß jetzt nicht wo groß der Aufwand wäre um das so umzuschreiben.

Soll jetzt nicht danach aussehen "Da gibt man ihm den kleinen Finger und schon ist die ganze Hand weg"

Wenn Du keine Lust mehr dazu hast, ist das auch kein Problem dann schau ich mal weiter. Trotzdem nochmal Danke dafür.

 

Gruß Braintee

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...