Welches Tool beherrscht Suche nach langen Speicherpfaden ?

zazie

Captain
Registriert
Aug. 2005
Beiträge
3.159
Ich habe folgendes Problem: Wenn ich ein Backup meiner NAS erstelle, gibt es bei einigen Files Fehlermeldungen, weil die Pfade plus die Dateinamen zu lang sind. Es geht um mehrere Dutzend Files in den verschiedensten Ordnerstrukturen. Zur Klarheit: auf der NAS selbst sind alle diese Files korrekt gespeichert, aber zusammen mit den Zusätzen, die die verwendete Backupsoftware zusätzlich vergibt, laufe ich in die Begrenzung.

Ich suche nun ein Tool, das mir diese Files auf dem NAS automatisch raussucht, damit ich die Pfade bzw. die Filenamen kürzen kann. Automatisch deshalb, weil es um einen Datenbestand von 572 GB und knapp 17'000 Ordner geht. Kennt jemand ein solches Tool ?

Je nach Suchergebnissen müsste ich dann entweder Filenamen kürzen oder - wahrscheinlicher - die Ablagestruktur anpassen. Bestandteil des Backupts sind nämlich auch Daten, die von alten PCs stammen und natürlich alle ein "Backup" (oder ähnlich) im Namen enthalten, teils mehrfach, was sich dann vereinfachen liesse. Bei der Grösse des Datenbestandes ist die rein manuelle Vorgehensweise aber keine echte Alternative, weil die entsprechenden Daten bzw. die problematisch langen Pfadnamen weitherum verstreut sind ...

Ich habe es mit Total Commander versucht, der zwar viele Suchoptionen bietet, aber keine, die Dateipfade mit beispielsweise mindestens 155 Zeichen sucht - oder ich habe die Funktion dafür nicht gefunden.

Kann jemand helfen ?
 
Ein Aufruf in Powershell sollte das lösen:
Code:
cmd /c dir /s /b |? {$_.length -gt 260}
Ausführungspfad sollte die NAS sein.

Dir /s /b listet alle Dateien mit vollem Pfad auf und wenn diese länger als 260 Zeichen sind werden sie auf der Console ausgegeben.
 
...und in eine Textdatei umleiten.

DIR kann man aber auch gleich in eine Textdatei umleiten und dann flexibel handhaben.
 
Ich hatte immer das Glück das es nur wenige Dateien waren und immer in Temp Ordnern.

Die hab ich mir dann auf unterster Ebene als Netzwerklaufwerk verbunden und hab so die Windowssperre umgangen, die Daten gelöscht oder umbenannt und fertig.

Das ist bei einigen wenigen Dateien einfach und effektiv.
 
Vielen Dank für die hilfreichen Hinweise - auf CB ist Verlass :)

Ich hab den Path Scanner heruntergeladen und er läuft derzeit.

Ich hab's zuvor mit der Powershell versucht, aber bin nicht ans Ziel gekommen.
Möglicherweise ist's an einer Kleinigkeit gescheitert: mein System (Win 8.1 aktuell gehalten) ist auf die Schweiz lokalisiert. Damit stimmen einige Zeichen nicht 1:1 mit dem Tastaturlayout überein. Auf meiner Ducky Legend sehe ich zwar das im Code vor dem Fragezeichen stehende Zeichen (senkrechter Strich), und zwar als dritte Option bei der Taste > bzw. < . Wenn ich meine Sonderzeichen mit Alt Gr durchtippe, erhalte ich auf Alt Gr 7 den senkrechten Strich |, aber im Fenster der Powershell liefert das die geteilte Variante ¦ . Starte ich Masamunes Code, meldet Powershell "Der Befehl "?" ist entweder falsch geschrieben oder ... "
Ich hab's dann noch mit Anpassungen versucht und erreicht, dass die Files angezeigt werden: dir f:\ /s /b /n {$_length -gt 260}, aber Powershell hat da nur eine Liste aller Files im Verzeichnis F:\ geliefert.
Vorherige Versuche mit dem Austausch von | durch \ oder / haben nichts Zählbares ergeben.

PS: Inzwischen hat Path Scanner einen ersten Durchlauf beendet. Es hat geklappt (also auch unter 8.1, obwohl nur XP und vista genannt werden), ich denke, ich werde damit zum Ziel kommen. Danke!

Aber ich möchte trotzdem noch wissen, wie ich den Powershell-Befehl umsetzen kann/muss :p
 
Du kannst dir ja mal Everything anschauen, das ist ein nettes Suchtool. Total Coammander soll auch in der nächsten Version darauf zugreifen können.
In Everything würdest du einfach len:155 eingeben.
 
Der geteilte Strich macht das gleiche. Du müsstest die Zeile eigentlich einfach kopieren können und in der Powershell ausführen. Bei mir klappt das direkt.

Starte ich Masamunes Code, meldet Powershell "Der Befehl "?" ist entweder falsch geschrieben oder ... "
Dann hast du den Befehl NICHT in der Powershell sondern in der normalen cmd gestartet.
 
@Masamune2 : Du hast recht, ich habe PS gestartet, bin aber beim Wechseln aufs "richtige" Laufwerk F:\ in die Befehlsstruktur ohne vorangestelltes PS geraten.
Habe nun deinen Befehl laufen lassen, der klappt für C:\ , auch wenn ich den Längenparameter anpasse; ausfgegeben werden aber nur Files auf C:\.
Wechsle ich allerdings im Befehl cmd /f dir /s /b |? {$_.length -gt 260}, um F:\ zu durchsuchen, kommen keine Resultate, auch nicht, wenn ich den Pfas spezifiziere F:\qtd\synology.
 
Das /c ist kein Parameter um auf Laufwerk C: zu suchen sondern gibt an das eine cmd gestartet wird und nach Abschluss des Befehls wieder beendet.
Willst du den Befehl in einem anderen Pfad laufen lassen musst du zunächst dort hin wechseln.
Code:
cd F:\
cmd /c dir /s /b |? {$_.length -gt 260}
 
:blush: Wie peinlich ...
Es klappt nun so wie geplant. Herzlichen Dank für die Hilfe ... und die Geduld :)
 
Ich hätte ne kurze Zwischenfrage, rein interessehalber @Masamune2:
Warum startest du eigentlich ne cmd zum Dateien auflisten? Die powershell bringt doch eigentlich schon ein cmdlet dafür mit (get-childitem), für das sogar standardmäßig der alias dir definiert ist.

Bringt das "alte" dir der cmd irgendeinen Vorteil?
 
Das ist quasi ein Workaround da get-childitem Dateien mit mehr als 260 Zeichen gar nicht ersst auflistet:
Get-ChildItem : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
Damit funktioniert das Script offensichtlich nicht. Das klassische dir hat das Problem nicht.
 
Update/Erfahrungsbericht (falls der Thread via Suche gefunden wird):

  • Das Script von Masamune2 leistet genau das, was es soll: eine Liste der Dateien, deren Bezeichnung (also Ablageort und Namen des Files) länger sind als die im Script angegebene Länge (im obigen Beispiel 260, aber da ging bei mir noch deutlich mehr :))
    Das Script funktioniert auch unter speziellen Bedingungen: Ich ziehe mit qtd und dem darin eingebundenen rsync Backups. Stellt dieses Programm zu lange Namen fest, schreibt es eine "Markierung" zum File (unter Windows nicht erkennbar, in qtd selbst nicht markiert, aber als "Fehler" in der Zusammenfassung ausgewiesen (OHNE präzise Angaben, wo der Fehler liegt). Das Script von Masamune2 "übersetzt" in Powershell die Markierung in Klartext (sinngemäss: Datenpfad zu lang).
    Ich habe aufgrund dieser Ergebnisse die Ordnerstruktur auf der NAS angepasst (im Wesentlichen eigenerstellte Ordnernamen gekürzt), dabei aber bewusst ein File mit überlangem Namen bzw. Datenpfad stehen lassen; danach alle bisherigen Backups gelöscht und über Nacht qtd laufen lassen. Das Programm ist durchgelaufen und hat mit einem (1) Fehler abgeschlossen - also exakt so wie erwartet.

    Zu Path Scanner: das ist wirklich ein feines kleines Tool zum Aufspüren langer Dateibezeichnungen (incl. Ablagepfad); es kann noch mehr. Unter gewissen Umständen (= bei sehr grosser Anzahl von zu scannenden Dateien; bei mir > 250'000 ODER bei einer Anzahl von betroffenen Files > x [x nach meiner Schätzung mehr als 256]) kam es zu Win-Fehlermeldungen von .net bei der Ausgabe der gefundenen Daten, uns zwar zu jedem gefundenen File einzeln. Wenn man aber mit der Maus expressmässig sämtliche Fehlermeldungen wegklickte, wurden am Schluss die gefundenen Files wie gewohnt ausgegeben. Deshalb meine Tipps:
    1. Wer das Programm auf einem 64-bit-System nutzt, sollte "von oben her" mit der Suche beginnen, also mit einer Pfadlänge von 350 - und sich dann langsam runterhangeln
    2. Suchpfad eingrenzen und nicht gleich mit einem ganzen Laufwerk beginnen.

    Zu Everything: Das Tool enthält tatsächlich auch den Parameter Length (als len=() ); ich habe es aber nicht selbst ausprobiert, sondern in der Dokumentation geschmökert. Das Tool ist offenbar sehr mächtig.
Vielen Dank nochmals an alle Beteiligten`!
Ich habe nun mein System fit gemacht für das W10-Update, also Sicherheitsbackups erstellt. Der Download wurde soeben abgeschlossen, es fehlt noch ein Klick.
Ob das nun die "famous last words" meines PCs sind, wird sich zeigen :D
 
@zazie: "Update/Erfahrungsbericht (falls der Thread via Suche gefunden wird):"

Du Vorbild, Du! Genau, was man sich so oft vergebens wünscht von den TEs.

@"Everything": In der Tat ein mächtiges Werkzeug, das ohne Umschweife und Syntaxblähungen in Sekundenschnelle das erledigt, was ich brauchte (und dann noch viel mehr): Dateinamen oder Pfadnamen nach Größe suchen und in jeder nur erdenklichen Weise sortieren, kopieren, umbenennen usw. Kann ich nur empfehlen.
 
Zuletzt bearbeitet:
Zurück
Oben