Batch Ordner löschen

-3 heißt doch, dass alle Dateien die vor den letzten 3 Tagen verändert wurden gelöscht werden? D.h. es müssten doch auch Dateien von z.b. 2015 weg sein oder etwa nicht?

edit: Es funktioniert nun :D

Mit einer Variable geht das aber auch? Also wenn ich sage:

set backupordner=C:\Backup_Newsletter und dann als %backupordner% einbaue.

Jetzt werden nur Ordner gelöscht. Sind aber in dem Verzeichnis Dateien außerhalb der Ordnder bleiben diese erhalten :freak:
 
Zuletzt bearbeitet:
robocopy nutzen so wie ich im Beispiel auf vorherigen Seite geschildert habe ;)
das geht einwandfrei... Habe es mehrmals so benutzt...

Ich wünsche dir viel Erfolg und Glück mit basteln von einen Script ;)
 
mindwarper schrieb:
@rocketworm, habe es nicht vergessen! Warum auch, als ich helfen kann werde ich auch einfacherweise

Der Clou ist einfach den Verzeichnis in das Verzieichnis NULL zu kopieren, und voila, gut ist :)

Das ist der Trick, was ich gemeint habe.
das ist etwa äquivalent in Unix/Linux zu
Code:
cp dir /dev/null

@Mindwarper:
Ja bei windows gibts auch ein NULL device, dort hat es nur ein L also "NUL", aber robocopy kann es nicht als ziel nutzen und schmeisst einen Fehler. Sonst hätte ich das so auch gemacht ;).

@Bumblebee_3rd
den parameter /Q gibt es bei robocopy nicht, und /S und /E kann man nicht gleichzeitig bei robocopy nutzen, da sie sich Wiedersprechen.
 
Es sollte Dir nicht schwer fallen aus dem funktionierenden Befehl für Verzeichnisse einen für Dateien zu basteln ... :D


Code:
forfiles /p "%backupordner%" /s /d -3 /c "cmd /c IF @isdir==FALSE del /s /q @path"

Dafür braucht man kein Robocopy ...
 
Zuletzt bearbeitet:
rocketworm schrieb:
@Mindwarper:
Ja bei windows gibts auch ein NULL device, dort hat es nur ein L also "NUL", aber robocopy kann es nicht als ziel nutzen und schmeisst einen Fehler. Sonst hätte ich das so auch gemacht ;).
@rocketworm
Stimmt auch ja ;) deswegen hatte ich meinen Post ergänzt mit den /MIR Parameter und einen leeren Verzeichnis zu nutzen und den leeren Verzeichnis auf den Ordner mit (verschobenen) Dateien und Ordner zu kopieren mit robocopy ;)

Das habe ich so das ein und andere Mal so benutzt und hat erstaunlicherweise sehr gut funktioniert was ich wollte (d.h. löschen)

robocopy is nicht zwingend zu nutzen, kann tatsächlich auch anderes getan werden.
robocopy hat schöne Logging-optionen (/LOG) und ist meistens (nicht immer) schneller (deswegen heist es ja auch robust file copy = robocopy :))
 
Zuletzt bearbeitet:
Ich bin jetzt wieder von robocopy weg und verwende nun nur noch forfiles.

Hab jetzt halt nen Zweizeiler, einmal für die Ordner und einmal für alle Dateien die einfach so drin liegen :D

Ich teste das gleich nochmal mit der Variable, damit ich nicht immer den absoluten Pfad angeben muss.

Nochmals ein dickes Danke ;)

edit:
Hab jetzt folgendes dastehen:

@Echo ON

set zackzack = C:\Ordnername\...

forfiles %zackzack% /m *.* /s /d -1 /c "cmd /c del @path /q"
forfiles %zackzack% /s /d -1 /c "cmd /c If @isdir==TRUE rd @path /s /q"

PAUSE

Da löscht er mir aber alles :D auch andere Ordner die nix mit dem Verzeichnis zu tun haben
 
Zuletzt bearbeitet:
Falls Dein Pfad Leerzeichen enthält, dann braucht es die "". Wozu hast Du das /m *.* eingebaut? Auch solltest Du immer prüfen ob Ordner oder nicht.

Code:
@Echo OFF

:: Achtung - Pfad ohne abschließenden Backslash
set zackzack=C:\Ordnername\...

forfiles "%zackzack%" /s /d -1 /c "cmd /c If @isdir==TRUE rd @path /s /q"
forfiles "%zackzack%" /s /d -1 /c "cmd /c If @isdir==FALSE del @path /q"

Die Ursache Deines Fehlers sind die Leerzeichen vor und hinter dem "=" beim set-Befehl. Da gehören keine Leerzeichen hin. Du hast damit die Variable %zackzackLeerzeichen% erstellt. Deswegen hat er den Befehl mit dem aktiven Verzeichnis ausgeführt ...
 
Zuletzt bearbeitet: (Fehlerursache ergänzt)
Zurück
Oben