fahrrad
Goto Top

Verzeichnisse löschen, welche älter als 12 Stunden sind

Hallo an alle

ich suche ein kleines Windows Batch, welche alle Verzeichnisse löscht, welche älter als 12 h sind.

Für Dateien und Veriechnisse, wleche älter asl x tage sind habe ich genügend Lösungen, aber bene nicht für Verzeichnisse.

Vieln Dank & viele Grüße
Fahrrad

Content-Key: 169326

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

Ausgedruckt am: 29.03.2024 um 10:03 Uhr

Mitglied: bastla
bastla 07.07.2011 um 14:29:53 Uhr
Goto Top
Hallo Fahrrad!

Solltest Du mit WasFile lösen können ...

Grüße
bastla
Mitglied: Fahrrad
Fahrrad 07.07.2011 um 14:46:58 Uhr
Goto Top
Hallo Bastla,

vielen Dank für doe schnelle Antwort.

Da dies auf einem vailiderten System laufen soll, kann ich keine Software installieren/kopieren, deswergen Windows-Bordmittel die Qual der Wahl

VG
Fahrrad
Mitglied: Friemler
Friemler 07.07.2011 um 14:57:01 Uhr
Goto Top
Hallo Fahrrad,

wegen der schon oft diskutierten Probleme mit der Rechnerei mit Datumswerten in Batch schlage ich eine VBScript-Lösung vor:
If WScript.Arguments.Count > 0 Then
  Set objFSO = CreateObject("Scripting.FileSystemObject")  

  If objFSO.FolderExists(WScript.Arguments(0)) Then
    For Each objFolder In objFSO.GetFolder(WScript.Arguments(0)).SubFolders
      If DateDiff("h", objFolder.DateCreated, Now) > 12 Then objFolder.Delete(True)  
    Next
  Else
    WScript.Echo "Verzeichnis nicht gefunden."  
  End If
Else
  WScript.Echo "Bitte ein Verzeichnis angeben."  
End If

Das Script löscht in dieser Form auch Verzeichnisse mit schreibgeschützten Dateien.

Die Zeitdifferenz wird mit der Funktion DateDiff wegen dem Parameter "h" in Stunden ausgerechnet. DateDiff arbeitet unabhängig vom eingestellten Datumsformat und den Ländereinstellungen von Windows.

Gruß
Friemler
Mitglied: Fahrrad
Fahrrad 07.07.2011 um 15:14:30 Uhr
Goto Top
Hallo Friemler,

besten Dank für den Ansatz/das Skript.

Da ich nicht weiß wie die Verzeichnisse im Temp Ordner heißen habe ich es hiermit ausprobiert

FOR /F %%A IN ('DIR /AD /B') DO CScript //NoLogo RD12h.vbs %%A

(zum testen im VB-Skript in zeile 08 aus der 12 eine 1 gemacht) und so versucht alle Ordner, die älter als eine Stunde sind, löschen zu lassen, aber leider bleiben die Verzeichnisse alle stehen, obwohl sie älter sind als eine Stunde??

Vielen Dank
Fahrrad
Mitglied: Friemler
Friemler 07.07.2011 um 15:32:09 Uhr
Goto Top
Hallo Fahrrad,

sorry, das wichtigste habe ich bei meiner Erklärung vergessen - den korrekten Aufruf. Das Script muss mit einem Verzeichnis als Parameter aufgerufen werden, in dem sich die zu löschenden Verzeichnisse befinden. In Deinem Fall also:
cscript /nologo RD12h.vbs "%Temp%"

Gruß
Friemler
Mitglied: bastla
bastla 07.07.2011 um 15:35:31 Uhr
Goto Top
Hallo Fahrrad!

Beim Aufruf des Scripts (das bei einem oberflächlichen Test bei mir funktioniert hat) ist der Ordner, dessen Unterordner gelöscht werden sollen, zu übergeben - es könnte also einfach mit
CScript //NoLogo RD12h.vbs .
aufgerufen werden, wenn es die Unterordner des aktuellen Ordners bearbeiten soll ...
Übrigens: Bei Deiner Batchzeile oben würden wegen der fehlenden Anführungszeichen um "%%A" herum Ordner mit Leerzeichen im Namen durch den Rost fallen ...

Grüße
bastla
Mitglied: Fahrrad
Fahrrad 07.07.2011 um 15:42:14 Uhr
Goto Top
@Friemler
um so einfacher
perfekt

@bastla
ist mir denn auch noch aufgefallen, aber man lernt zum Glück nie aus.....

Ich danke Euch beiden und bin glücklich