Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Alte Dateien u. Unterordner in Ordnerstruktur automatisch entfernen

Frage Microsoft Windows Tools

Mitglied: novae7

novae7 (Level 1) - Jetzt verbinden

09.07.2009, aktualisiert 18.10.2012, 12308 Aufrufe, 6 Kommentare

Hi,
Es geht ums Löschen von alten Sachen in vielen Unterordnern ;)

Hiho,

ich hab da ein kleines großes Problemchen ;)

Ich fass es mal kurz


Ich hab auf einem Fileserver nen Share liegen dieser wird als Austauschordner für die Einzelnen Abteilungen bei uns Verwendet

P:\[Gebäude]\[Abteilung]\[Username]\[ne menge krempel inklusive vieler ordner]

Nun soll ich ein Script oder Programm besorgen -.- welches alles unter [Username] älter als 14 Tage löscht

Mein erster Vorschlag war Delage32 auf P:\ direkt mit 14 Tage laufen zu lassen (dadurch würde alles alte verschwinden)
dabei bleiben aber alle Ordner erhalten.

Auch die die in den Posteingängen von der Person selbst sind.
Diese sollen aber mit Verschwinden.

Ordner löschen kommt bei P:\ direkt nicht in frage da die Ordnerstruktur so erhalten bleiben Soll.
Also wäre nurnoch die möglichkeit für jeden Nutzer einzeln einen Eintrag zu machen für seinen Ordner... und dann alte Datein inklusive Unterordner löschen...

Wären dann ca 450 User.....
Das mir das zuviel ist sollte verständlich sein ;)


Nun die Frage(n):

Kennt noch jemand eine Alternative wo ich angeben kann ab welcher Ordnertiefe er Ordner löschen soll die älter als X sind?
(anderes Programm, VBS o.ä.)
Oder lässt sich das eventuel doch mit Delage32 machen und nem Script das die Ordner durchgeht?


OS ist W2k3s mit NTFS


Danke im Vorraus
(hoffe das ist inhaltlich verständlich ;)
Mitglied: 80220
09.07.2009 um 10:51 Uhr
Funktioniert die Suchfunktion bei dir nicht?

Dann probiere es mal hiermit:
http://www.administrator.de/index.php?query=Dateien+l%C3%B6schen+Datum& ...
Bitte warten ..
Mitglied: novae7
09.07.2009 um 11:15 Uhr
Doch die Funktioniert

Das doofe ist nur das ich Delage32 ja schon ausprobiert habe und es soweit auch funktioniert!

Nur bleiben Leere Ordner übrig!

Die will ich auch weg haben allerdings erst ab einer bestimmten ordner TIEFE und darauf bezog sichd as problem

Und für jeden Nutzer nen einzelnes Löschscript schreiben find ich wie gesagt sehr umständlich...
Darum ja die Frage hier
Bitte warten ..
Mitglied: mexx
09.07.2009 um 11:20 Uhr
Ich werde bestimmt noch gebannt, weil ich ständig die Powershell von Microsoft lobe, aber damit kannst Du ein Script schreiben, welches Deine Aufgabe erfüllt.

Zuerst müsste das Script eine rekursive Suche des Ordners vornehmen. Dabei kannst Du zahlreiche Kriterien ansetzten, wie Deine 14 Tage. Selbst den Username kannst Du die Pfadsuche oder Filter einbringen. Ich vermute mal, dass Besitzrechte ein Thema sind. Kein Problem für die Powershell. Da kann man beim Zugriff auf den Ordner die Besitzinformationen mitliefern. Das Script kann dan prüfen, ob nach dem Löschen der alten Dateien noch Daten in den Ordner sind und wenn nicht dann kann der gesamte Ordner gelöscht werden.

Sowas ähnliches habe ich schon mit unseren Filesystem machen wollen. Hier mal der Code, der zum Einsatz kam. Vielleicht hilft er Dir. Aber sei vorsichtig damit!

01.
cls 
02.
write-host "--- BEGIN --- " -foregroundcolor GREEN -backgroundcolor BLACK 
03.
write-host "Setzte Variablen" -foregroundcolor GREEN -backgroundcolor BLACK 
04.
 
05.
#PRÜFPFAD 
06.
$CHKPATH = "D:\" 
07.
 
08.
#LOGFILES 
09.
$FEHLERFILE = "G:\fehler.txt" 
10.
$ERFOLGFILE = "G:\okay.txt" 
11.
 
12.
#PRÜFDATEI 
13.
$EXPFILE = "G:\export.txt" 
14.
 
15.
write-host "Schreibe Prüfdatei" -foregroundcolor GREEN -backgroundcolor BLACK 
16.
Get-ChildItem $CHKPATH -recurse | Where {$_.LastWriteTime -le "01.01.2008"} |Select-Object Name,Fullname,Length,Attributes,LastWriteTime |Export-CSV $EXPFILE –encoding "unicode" 
17.
 
18.
write-host "Lade Prüfdatei" $EXPFILE -foregroundcolor GREEN -backgroundcolor BLACK 
19.
$FILES = Import-CSV $EXPFILE 
20.
 
21.
write-host "Berechne Summe" $EXPFILE -foregroundcolor GREEN -backgroundcolor BLACK 
22.
$FILES |Measure-Object length -sum 
23.
 
24.
$MAX = $Files.count 
25.
$COUNTER = 0 
26.
 
27.
write-host "Starte Vorgang" $EXPFILE -foregroundcolor GREEN -backgroundcolor BLACK 
28.
foreach ($FILE in $FILES) 
29.
30.
  if ($FILE.Attributes -eq "Archive") 
31.
32.
    $COUNTER = $COUNTER + 1  
33.
    "Bearbeite " + $COUNTER + " von " + $MAX + ": " + $FILE.NAME   
34.
 
35.
    $DESTPATH = $file.fullname.split(":") 
36.
    $DESTPATH = "G:" + $DESTPATH[1]   
37.
 
38.
    $temp = $DESTPATH.TRIMEND($FILE.NAME) 
39.
    $temp = $temp.trimend("\") 
40.
 
41.
    write-host "Erzeuge Datei" $DESTPATH 
42.
    NEW-ITEM $temp -type directory -force 
43.
    COPY-ITEM $FILE.FULLNAME $DESTPATH -force 
44.
     if ($FILE.LENGTH -eq (GET-ITEM $DESTPATH).LENGTH) 
45.
46.
       write-host "ERFOLGREICH" -foregroundcolor GREEN -backgroundcolor BLACK 
47.
       $FILE.FULLNAME |OUT-FILE $ERFOLGFILE -append 
48.
      }ELSE 
49.
50.
       write-host "FEHLER" -foregroundcolor RED -backgroundcolor BLACK 
51.
       $FILE.FULLNAME |OUT-FILE $FEHLERFILE -append        
52.
      }   
53.
54.
55.
write-host "--- ENDE --- " -foregroundcolor GREEN -backgroundcolor BLACK
Bitte warten ..
Mitglied: novae7
09.07.2009 um 11:40 Uhr
Danke ;)

Das geht in die richtung über die ich selbst grad nachgedacht hab

wenn ich das richtig verstehe geht er an der stelle die verzeichnisse durch

Get-ChildItem $CHKPATH -recurse | Where {$_.LastWriteTime -le "01.01.2008"} |Select-Object Name,Fullname,Length,Attributes,LastWriteTime |Export-CSV $EXPFILE –encoding "unicode"

schreibt die in eine datei und arbeitet dann mit einer schleife alle ordner durch zum löschen?

das hilft mir schonmal weiter

Danke!
Bitte warten ..
Mitglied: novae7
09.07.2009, aktualisiert 18.10.2012
So problem mehr oder weniger gelöst ;)

aufgrund der rekursiven abfrage bin ich dann auf ne andere such idee gekommen..
da das probelm ja nur die leeren ordner waren einfach mal "leere ordner löschen" in die suche eingeben...

da gibts dann auch die lösungen ;)
http://www.administrator.de/forum/alte-dateien-l%c3%b6schen%2c-aber-nic ...



danke trotzdem an mexx für den denkanstoß



*und als gelöst makier*
Bitte warten ..
Mitglied: mexx
09.07.2009 um 12:01 Uhr
Richtig. Man müsste die Ergebnismenge nicht in eine Datei schreiben. Es geht auch mit einer Variable, aber ich halte es für transparenter und schneller, wenn die Datenmenge aus der Datei geladen wird. Wichtig ist das Select-Object. Bei zu vielen Dateieigenschaften in der CSV kann beim Laden der Exportdatei ein Memory-Fehler auftauchen. Dann wäre das Arbeiten ohne Datei sinnvoller. Bei unseren 6 Millionen Dateien war das zumindest der fall.

Schau Dir erstmal die Exportdatei an und sag bescheid, wie Du Dir die weitere Verarbeitung des Ergebnises vorstellst.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...