hamspirit
Goto Top

Dateien mit best. Attributen innerhalb einer VerzStruktur finden und löschen

Hallo zusammen,

ich habe die Aufgabe, eine gegebene Ordnerstruktur, die mit zigtausend Dateien gefüllt ist, nach Dateien mit bestimmten Attributen zu durchsuchen.
Die gefundenen Dateien sollen gelöscht werden.

Hintergrund:
Es handelt sich um die Dateien eines gealterten Fileservers (Win 2003 Std SP2). Dort kam vor Jahren mal ein Dateiarchivierungssystem zum Einsatz. Diese hat Dateien mit einem bestimmten Alter auf eine andere Plattform verschoben und in den entspr. Verzeichnissen einen Link dorthin hinterlassen.
Dieses Archivierungssystem gibt es nun nicht mehr und nun befinden sich knapp 10.000 Links in den Ordnern, die ins Leere verweisen.
Da die Daten des Fileservers in eine neue Ordnerstruktur und auf einen anderen Server migriert werden sollen, müssen diese toten Links zuvor enfernt werden, da es sonst Probleme mit der Dateiübernahme gibt.

Ich haben nun eine Text-Datei, die ich durch --- dir *.* /s /al > deadfiles.txt --- erzeugt habe.

Der Inhalt sind bekanntermaßen in etwa so aus:

---

Verzeichnis von H:\Daten\Abschluesse\Firma1\2004\Q4

09.02.2004 22:30 (8.945.664) Bestandsabwertung 040209_2.xls
23.02.2005 14:27 (2.606.592) Bestandsbewertung XX23104.xls
26.01.2005 12:48 (2.186.240) Debitorenstatistik FDSA.xls
11.11.2004 13:07 (1.253.376) Hš GD 30.09.2004-Verbesserung.xls
14.02.2006 16:44 (1.193.472) Hš GP 31.12.2004-Verbesserung.xls
04.10.2005 10:08 (15.498.766) Unterlagen Steuererkl„rung 2004.zip
02.02.2005 12:09 (17.677.312) Wareneing„nge FirmaXYZ.xls
7 Datei(en), 49.361.422 Bytes

---

Nun möchte ich diese Textdatei nutzen, um die darin befindlichen Dateien zu löschen.
Ich glaube aber fast, dass ich ohne viel Aufwand damit gar nichts anfangen kann. Ich müsste vor jeden Dateinamen den Pfad hinzufügen, um pro Zeile eine vollständige Dateiinfirmation zu erhalten. Zudem müssten die ganzen überflüssigen Informationen weg, die sich noch mit in der Textdatei befinden. Da wäre das manuelle Löschen der Dateien schneller, als diese Datei anzupassen. ;O)

Gibt es evtl. ein Tool, mit dem ich diese Aufgabe lösen kann?

Was könnt ihr mir empfehlen?

Danke vorab.

Hamspirit

Content-ID: 274691

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

114757
114757 16.06.2015 aktualisiert um 16:06:46 Uhr
Goto Top
Moin,
könntest du z.B. via Powershell machen:
Löscht alle Softlinks die es in einem Verzeichnis und dessen Unterverzeichnisse findet
gci "D:\Daten" -recurse -force | ?{$_.Attributes -band [System.IO.FileAttributes]::ReparsePoint} | remove-item -Force  
Ansonsten kann das fast jeder bessere Dateiexplorer (TotalCommander / DirectoryOpus etc.)

Gruß jodel32
Dilbert-MD
Dilbert-MD 16.06.2015 um 15:52:38 Uhr
Goto Top
Hallo,

mit einem alternativen Dateimanager zum Beispiel. Der Freecommander bietet z.B. die Suche (Alt-F7) nach Dateien mit bestimmten Attributen an. In der Ergebnisliste der Suche kannst Du dann alle Suchergebnisse markieren und kopieren/ausscheiden/löschen

FC ist ein Klon des Norton Commanders

Gruß
Holger
hamspirit
hamspirit 16.06.2015 um 16:00:37 Uhr
Goto Top
Hey, das wäre ja genau das richtige. Und vor allem ganz ohne Dateiliste. ;)
An welcher Stelle wird denn das hier gesuchte Dateiattribut abgefragt?
114757
114757 16.06.2015 aktualisiert um 16:05:03 Uhr
Goto Top
Zitat von @hamspirit:
Hey, das wäre ja genau das richtige. Und vor allem ganz ohne Dateiliste. ;)
An welcher Stelle wird denn das hier gesuchte Dateiattribut abgefragt?
in diesem Abschnitt werden die gesetzten Attribute verglichen ob es sich um einen Soft-Link handelt
?{$_.Attributes -band [System.IO.FileAttributes]::ReparsePoint}
FileAttributes-Enumeration
hamspirit
hamspirit 16.06.2015 um 16:18:31 Uhr
Goto Top
Ok, das war mir schon klar. Aber was ist hier das Attribut?
Wie sieht die Zeile aus, wenn es sich um eine versteckte oder schreibgeschützte Datei handelt?
114757
114757 16.06.2015 aktualisiert um 16:24:12 Uhr
Goto Top
Zitat von @hamspirit:

Ok, das war mir schon klar. Aber was ist hier das Attribut?
In $_.Attributes stehen alle Attribute drin, dann wird mit einem Bit-Vergleich (-band) überprüft ob eine Datei ein bestimmtes Attribut hat.
Wie sieht die Zeile aus, wenn es sich um eine versteckte oder schreibgeschützte Datei handelt?
Hast du mal meinen Link gelesen ?? Da stehen die verfügbaren Attribute nach denen du filtern kannst!
Bei versteckten nutzt du als Filter
?{$_.Attributes -band [System.IO.FileAttributes]::Hidden}
und bei schreibgeschützen:
?{$_.Attributes -band [System.IO.FileAttributes]::Readonly}
Natürlich kombiniert mit dem Rest des Codes aus dem ersten Post.
Die Filter kannst du auch kombinieren (mit -and oder -or):
?{$_.Attributes -band [System.IO.FileAttributes]::Readonly -and $_.Attributes -band [System.IO.FileAttributes]::Hidden }

Gruß jodel32
hamspirit
hamspirit 16.06.2015 um 16:24:55 Uhr
Goto Top
Sorry, Jodel32, den Link habe ich total übersehen.
Danke für die Hilfe. MIr war nicht klar, dass dieser Softlink als ReparsePoint bezeichnet wird.
Ich werde das mal testen und dann über den Server jagen.
Hast mir sehr geholfen. Vielen Dank.
114757
114757 27.06.2015 um 12:44:11 Uhr
Goto Top
Dann bitte noch als gelöst markieren. Danke.