Seite 1 von 1

Sortierung von Dateinamen stimmt nicht ...

Verfasst: So, 02. Jun 2013 12:19
von brandelh
Hi,

Sobald ein Dateiname länger als 8.3 ist, wird intern eine Abkürzung mit Ziffer verwendet (Beisp~1.*), leider auch für die Sortierung solange man nicht diesen Schlüssel setzt:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb\Parameters\InfoCacheLevel => REG_DWORD => 0x10 oder 16 dezimal.

Unter Windows 7 gibt es den Schlüsselwert HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb\Parameters jedoch nicht, also muss man diesen anlegen.
Ich habe mal meinen Wert aus regedit exportiert und mit ZIP gepackt, wenn man die beiliegende Datei speichert, entpackt und anklickt, sollte das funktionieren ;-)

PS: ich weiß, dass der Wert schon mehrfach in anderen Beiträgen erwähnt wurde, aber ich habe eben eine ganze Zeit vergeblich gesucht, daher der neue Beitrag mit neuen Suchbegriffen und der passenden Überschrift.

Re: Sortierung von Dateinamen stimmt nicht ...

Verfasst: So, 02. Jun 2013 12:33
von brandelh
Ich muss gerade feststellen, dass ich voreilig war :-( er sortiert folgende Verzeichnisse immer noch falsch :?

mit CMD /ON wird richtig sortiert (anonymisiert mit ?):

Code: Alles auswählen

20130209 Diemel??? mit L?????
20130401 Wandern mit ????
20130402 ??? ???? ????
20130413 ??? ?????????
201305xx ???????????
aber im Explorer kommt das zuletzt angelegte Verzeichnis oben ...

Code: Alles auswählen

201305xx ???????????
20130209 Diemel??? mit L?????
20130401 Wandern mit ????
20130402 ??? ???? ????
20130413 ??? ?????????
Hat noch jemand eine Idee ?

Ach ja, Windows 7 Home Premium und Windows 7 Ultimate, gleiche Sortierung.

Re: Sortierung von Dateinamen stimmt nicht ...

Verfasst: So, 02. Jun 2013 18:23
von Herbert
Hubert, wie kommst du darauf? Womit erzeugst du noch die alte Dateibegrenzung nach 8.3?
Du kannst wohl 8.3-Filenamen erzwingen, aber normalerweise hast du das doch nicht mehr?? Alte 16-bit-Dinge ja. Aber wer hat das noch?
Ich verstehe dich nicht...

Re: Sortierung von Dateinamen stimmt nicht ...

Verfasst: Mo, 03. Jun 2013 1:32
von brandelh
Was ich weiß ist, dass die Sortierung der längeren Verzeichnisnamen trotz meines vorangestellten Datums von Windows 7 nicht korrekt angezeigt wird.
Ich denke das hängt damit zusammen, dass intern immer noch nach 8.3 sortiert wird, obwohl ich diese Namen nicht selbst vergebe und auch nicht angezeigt bekomme.
InfoCacheLevel sollte das - so wie ich es verstanden habe - beheben, aber bei mir hat es das nicht. Ich verstehe es auch nicht :D

PS: vielleicht hängt es an den xx für den Tag (wobei x größer als 9 ist ...) und der seit XP seltsamen Zahlensortierung (wo ich doch extra auf Jahr Monat Tag umgestellt habe ...) :badgrin:

Re: Sortierung von Dateinamen stimmt nicht ...

Verfasst: Mo, 03. Jun 2013 1:34
von brandelh
stimmt, wenn ich 20130500 schreibe wird es als letztes Verzeichnis eingeordnet ... =D>

Re: Sortierung von Dateinamen stimmt nicht ...

Verfasst: Mi, 05. Jun 2013 18:26
von AUGE_OHR
hi,
brandelh hat geschrieben:aber im Explorer kommt das zuletzt angelegte Verzeichnis oben ...
die "Anzeige" des Explorer ist ja ein Listview.

"gefüttert" wird ein Listview mittels WIN32_FIND_DATA Structure
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
brandelh hat geschrieben:... dass intern immer noch nach 8.3 sortiert wird, obwohl ich diese Namen nicht selbst vergebe und auch nicht angezeigt bekomme.
Remarks

If a file has a long file name, the complete name appears in the cFileName member, and the 8.3 format truncated version of the name appears in the cAlternateFileName member. Otherwise, cAlternateFileName is empty. If the FindFirstFileEx function was called with a value of FindExInfoBasic in the fInfoLevelId parameter, the cAlternateFileName member will always contain a NULL string value. This remains true for all subsequent calls to the FindNextFile function. As an alternative method of retrieving the 8.3 format version of a file name, you can use the GetShortPathName function. For more information about file names, see File Names, Paths, and Namespaces.