qm1qm1
Goto Top

Ordner -geändert am- löschen per batch

xx

hiho
ich möchte windows alle 24studen automatisch ordner löschen lassen die "geändert am" älter als 5 tage sind

per task sheduler ist eine einfache sache aber das batch ist kniffelig

X:\viele
X:\ordner
X:\auf
X:\dem
X:\laufwerk-X

wenn "geändert am" älter als 5 tage dann rd /s /q sonst nicht

wie komme ich an das "geändert am" datum der ordner per batch ? (nicht "erstellt am")
und rechne das datum 5 tage zurück ?

ist das evtl per vbs leichter ? (bin nicht vbs fest)

andre
Kommentar vom Moderator Biber am 07.11.2011 um 06:12:34 Uhr
Verschoben von "wa-wo-windows" nach "Batch & Shell".

Content-ID: 175864

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

Ausgedruckt am: 17.11.2024 um 02:11 Uhr

bastla
bastla 06.11.2011, aktualisiert am 18.10.2012 um 18:49:02 Uhr
Goto Top
Hallo qm1qm1!

Im Hinblick auf die große Anzahl von Beiträgen, in denen dieses Thema schon behandelt wurde, ist es etwas verwunderlich, dass Du bei der Suche hier im Forum noch nicht fündig geworden bist ... face-wink

... denn das passende VBScript (eignet sich tatsächlich für diesen Zweck besser als Batch) gibt's schon seit Jahren ...

Grüße
bastla
DerWoWusste
DerWoWusste 06.11.2011 um 23:36:39 Uhr
Goto Top
Moin.

Weitere Lösung: Lad Dir mal forfiles.exe von MS runter und schau Dir den Parameter /d an.
qm1qm1
qm1qm1 10.11.2011 um 13:59:15 Uhr
Goto Top
zu dem vbs eine frage


Set myArguments = WScript.Arguments
If myArguments.Count <> 2 Then
call DisplayInfo
Wscript.Quit (1)
End if

Dim heute, olddate
heute = FormatDateTime(Date, 2)
olddate = DateAdd("d","-" & myArguments(1), heute)
set objFS = CreateObject("Scripting.FilesystemObject")

set myFolder = objFS.GetFolder(myArguments(0))
set mySubfolders = myFolder.Subfolders
for each subfolder in mySubfolders
if subfolder.DateCreated < olddate then
subfolder.Delete
end if

next
Sub DisplayInfo
MsgBox "Usage: deleteoldfolders.vbs [FolderPath] [Anzahl Tage]", vbExclamation, "Missing Arguments"
end Sub


das argument
"..vbs x:\ 10" erzeugt ein fehler 800A0046
wenn ich stattdessen
"...vbs x:\test 10" funktioniert das vbs wie gewünscht
bastla
bastla 10.11.2011, aktualisiert am 18.10.2012 um 18:49:04 Uhr
Goto Top
Hallo qm1qm1!

Ändere den Teil (wenn Du "Code"- verwendet hättest, könnte ich jetzt die Zeilennummern angeben)
for each subfolder in mySubfolders
if subfolder.DateCreated < olddate then
subfolder.Delete
end if

next 
auf
for each subfolder in mySubfolders
if subfolder.Name <> "System Volume Information" Then  
    if subfolder.DateCreated < olddate then
        subfolder.Delete
    end if
end if
next
Falls es noch andere Ordner gibt, für die Du keine Löschrechte hast, müssten diese gleichfalls ausgenommen werden (siehe dazu diesen Beitrag) ...

Grüße
bastla