Archiv Windows XP 25.916 Themen, 128.567 Beiträge

NTFS: Wie herausfinden ob Gesamtname für Datei zu lange.

bestUnknown / 8 Antworten / Baumansicht Nickles

Hallo!

Ich hab jetzt schon ein Weilchen erfolglos gegoogelt und ein paar Boards durchsucht.

Gibt es denn kein Tool, das mir für NTFS (und andere FS) rekursiv / für eine ganze Platte scannt, welche Dateinamen aufgrund Ihrer Gesamtlänge (also sämtliche Verzeichnisnamen + \ + Dateinamen + Endung) nicht mehr konform sind - also insgesamt mehr als 260(?) Zeichen haben.

Oder Bordmittel von XP Prof?

Jemand eine Idee?

1000end Dank!

Und bitte keine Predigten von wegen das sowas garnicht erst entstehen sollte. Die halte ich seit Jahren selber und es wächst trotzdem organisch :P

Grüße,

bestUnknown

[Diese Nachricht wurde nachträglich bearbeitet.]

Achim20 bestUnknown „NTFS: Wie herausfinden ob Gesamtname für Datei zu lange.“
Optionen

Wie können denn solche nicht-konformen Dateien erst entstehen? Würde Windows da nicht schon meckern?

bestUnknown Achim20 „Wie können denn solche nicht-konformen Dateien erst entstehen? Würde Windows...“
Optionen

"müsste" ist das Schlagwort.

Ich versuche noch, das herauszufinden.

Sehe derzeit drei Möglichkeiten: Entpacken von Archiven und Abspeichern von Downloads und nachträgliches umbenennen übergeordnerter Verzeichnisse.

Wenn ich in der xten Ebene ein Archiv mit nochmal einem Verzeichnis und einigen aufsatzmäßig langen Dateinamen entpacke möglicherweise.

Aber ganz allgemein ist es doch so: Wenn Du wissen willst, was ein System / eine Technik / eine Prozedur wirklich taugt, dann lass ein paar technisch *völlig* unbegabte eine Weile damit arbeiten. Danach kannst Du dann die Schweben einsammeln. Das beste Betatesting ist ein verfrühtes Rollout :)

[Diese Nachricht wurde nachträglich bearbeitet.]

elblindo bestUnknown „NTFS: Wie herausfinden ob Gesamtname für Datei zu lange.“
Optionen

Hallo,

mit ein bisschen Weiterung könnte das hier einen Ansatz bieten!

Gruss

ElBlindo

bestUnknown elblindo „Hallo, mit ein bisschen Weiterung könnte das hier einen Ansatz bieten! Gruss...“
Optionen

Hi ElBlindo.

Danke Dir. Das hat mich dazu gebracht einen Workaround zu preobieren, der mir schon im Kopf herumgegeistert ist, aber noch nicht an meinem Inneren-Schweinehund-Zerberus vorbeikam.

Leider hab' ich zu wenig VBS drauf um das Skrit anzupassen, das dort erwähnt wird.

Mein Workaround sieht so aus:

1) Tief Luft holen
2) Eine Minute an etwas schönes und friedliches denken um zu vergessen, wie oft man Namenskonventionen gepredigt hat.
3) Das Tool "DirTree" von http://www.wurzeldrei.de/ herunterladen.
4) Mit selbigem das Verzeichnis genau so ansteuern, wie es auch in Gebrauch ist.
5) Option "Alle Dateien zuammen mit ihren Pfaden in ein Feld schreiben" (wichtig!) und ohne HTML auswählen.
6) Das ergebnis als Textdatei speichern.
7) Selbige in einem gescheiten Editor und mit einer PROPORTIONALEN SCHRIFTART (!) betrachten. Z.B. CrimsonEditor von http://www.crimsoneditor.com/.
8) Beim längsten Eintrag der einem auffällt an's Ende der betreffenden Zeile springen und (in dem Fall) rechts unten nachsehen, welche Zeichenposition dies ist => Gesamtlänge des Dateinamens
9) Nun den Rest der Datei durchscrollen und schauen ob ein anderer Eintarg vielleicht noch weiter nach rechts geht.
10) punkte 8-9 so lange wiederholen, bis sicher ist, das keiner der Einträge mehr als 255(260?) Zeichen hat.

Vorschlag zur automatisierung: Schafft euch Praktikanten an.

Hat denn noch keiner ein Tool für sowas geschrieben? Wäre echt ein Ansporn eine Hochsprache zu lernen.

elblindo bestUnknown „Hi ElBlindo. Danke Dir. Das hat mich dazu gebracht einen Workaround zu...“
Optionen

Hallo nochmal,

also vbs ist so schwer nicht zu lernen, der versuch ist es wert. Es gibt auch viele code-Schnipsel, die schon gute Ideen liefern.
Eine wäre, ein schon vielfach vorhandenes Codefragment, die recursive Suche nach Dateien inklusive Pfad, abzuwandeln und die Ausgabe des Pfad+Dateinamenstrings einfach nach der Länge auszuwerten. Wenn mir mal etwas Zeit zur Verfügung steht innerhalb der nächsten Tage, würde ich mich nochmal melden, um soetwas angepasstes zu posten.

Gruss

ElBlindo

Tilo Nachdenklich bestUnknown „NTFS: Wie herausfinden ob Gesamtname für Datei zu lange.“
Optionen

Nicht gerade eine elegante Lösung:

Ich vermute mal es reicht von der Partition mit NT-Backup (Die "Sicherung") ein Backup zu machen, auf ne andere leere Partition, vielleicht auf einer anderen Festplatte. Dateien mit zu langen Namen werden nicht ins Backup übernommen und tauchen im Protokoll auf. So war es jedenfalls noch bei Win98. Das dauert aber, wenn die Festplatte groß und voll ist.

Borlander bestUnknown „NTFS: Wie herausfinden ob Gesamtname für Datei zu lange.“
Optionen

Mit dir c:\ /s /b > dateiliste.txt eine Liste alle auf dem Datenträger gespeicherten Dateien erstellen, dann einfach die längste raussuchen (wenn man Excel hat kann man es auch damit bequem machen)...

Gruß
Borlander

elblindo bestUnknown „NTFS: Wie herausfinden ob Gesamtname für Datei zu lange.“
Optionen

Hallo,

also hier mal ein schnell zusammengebautes Script (original hier ) Probleme bereiten noch dateien, auf die der Zugriff aus welchen Gründen auch immer nicht möglich ist, da steigt das Script aus. Soll ja aber auch nur als Anregung dienen!

Von hier ab ausschneiden, als suche_datei.vbs abspeichern und an den beschriebenen Stellen anpassen.

'------------FileSearch.vbs---------------------
Set fso = CreateObject("Scripting.FileSystemObject")

' In der nächsten Zeile den Suchordner anpasssen

set root=fso.getFolder("d:\")

' In der nächsten Zeile die Ausgabedatei bestimmen

set oFile=fso.CreateTextFile("c:\Testfile.txt")

call folderlist(root)

sub folderlist(grp)
call filelist(grp)
for each fldr in grp.subFolders
set nf=fso.GetFolder(fldr.path)
call folderlist(nf)
set nf=nothing
next
end sub

sub filelist(grp)
for each file in grp.files
laenge=len(file) + len (path)
oFile.writeLine file.path & " Länge = " & laenge

next
end sub
'---------------------------------------------------

hier nicht mehr ausschneiden!


das erzeugt dann in etwa folgende datei C:\Testfile.txt

D:\mwmlog.txt Länge = 13
D:\Dokumente\Fax\fax00012.sff Länge = 29
D:\Dokumente\Fax\fax00013.mmr Länge = 29
D:\Dokumente\Fax\fax00013.m_r Länge = 29
D:\Dokumente\Fax\fax00013.sff Länge = 29
D:\Dokumente\ppc1 My Documents\Canoe.jpg Länge = 40
D:\Dokumente\ppc1 My Documents\cerralf.cer Länge = 42
D:\Dokumente\ppc1 My Documents\cerralf64.cer Länge = 44
D:\Dokumente\ppc1 My Documents\certcrl.crl Länge = 42
D:\Dokumente\ppc1 My Documents\certnew.cer Länge = 42
D:\Dokumente\ppc1 My Documents\certnew.p7b Länge = 42
D:\Dokumente\ppc1 My Documents\cert_ralf.cer Länge = 44
D:\Dokumente\ppc1 My Documents\cert_ralf.p7b Länge = 44
D:\Dokumente\ppc1 My Documents\Couple.jpg Länge = 41
D:\Dokumente\ppc1 My Documents\crtimprt.cfg Länge = 43

Jetzt kann man noch if- Schleifen für Längen grösser x einbauen und und und

Gruss


Elblindo