1.6k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von kicia Mitglied (939 Punkte)
Kann sich jemand das folgende Directory-listing einer Windows - Batchdatei (.cmd) erklären ?

Die Ordner sind in umgekehrter alphabetischer Reihenfolge gelistet, die Dateien in "normaler" alphabetischer Reihenfolge.

die .cmd Datei enthält:
dir *.* /s>dir.txt


die Ausgabe ist:
Directory of P:\start

01/09/2013 01:00 PM <DIR> .
01/09/2013 01:00 PM <DIR> ..
01/09/2014 11:00 AM <DIR> photos

Directory of P:\start\photos

01/09/2014 11:00 AM <DIR> .
01/09/2014 11:00 AM <DIR> ..
01/09/2014 11:00 AM <DIR> S
01/09/2014 11:00 AM <DIR> E_4
01/09/2014 11:00 AM <DIR> E_3
01/09/2014 11:00 AM <DIR> E_2
01/09/2014 11:00 AM <DIR> E_1
01/09/2014 11:00 AM <DIR> C

Directory of P:\start\photos\S

01/09/2014 11:00 AM <DIR> .
01/09/2014 11:00 AM <DIR> ..
01/09/2013 02:00 PM 1,000,000 S_01.jpg
01/09/2013 02:00 PM 1,000,000 S_02.jpg
01/09/2013 02:00 PM 1,000,000 S_03.jpg
01/09/2013 02:00 PM 1,000,000 S_04.jpg

3 Antworten

0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Ja, kann sich. Ich fass es zusätzlich noch in Worte:

die sind nicht sortiert - man kann sich selbst nicht mal auf die Reihenfolge derer Erstellungsdaten verlassen. Um eine sortierte Ausgabe zu bekommen liest Du Dir am besten DIR /? durch.
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
Danke für die Antwort.

Ich kann an dem Problem leider nicht mehr weiterarbeiten, weil es den Rechner, an dem es aufgetreten ist, nicht mehr gibt.

Trotzdem nochmal Details:

Windows XP.

Die DIR-Parameter kenne ich im Prinzip, auch die Umgebungsvariable DIRCMD, aber auch ohne Parameter und ohne DIRCMD ist die Reihenfolge immer gleich (normalerweise vorwärts sortiert).
Insbesondere ist die Reihenfolge der Ordner und Dateien gleich (beide vorwärts, beide rückwärts, ...)

Genaugenommen ging es um ein HTA-Script, dass eine Foto-gallery erstellt.
Die Dateien und Ordner wurden mit den Properties "Files" und "SubFolders" des "Folder" Objektes gelesen.
Siehe dazu: FileSystemObject / Folder Object

Den DIR Befehl habe ich verwendet, weil er anscheinend ohne Parameter (und ohne DIRCMD) die selbe Reihenfolge zeigt, wie das Script.

Die Reihenfolge lässt sich nicht beeinflussen, wenn ich die Dateien/Ordner in einer anderen Reihenfolge erstelle (egal, ob über WindowsExplorer oder Kommandozeile).

Die Reihenfolge war sein Jahren bei mehreren hundert Projekten immer vorwärts sortiert, und ist es auch jetzt noch. Einzige Ausnahme war ein Projekt auf einem Rechner. Auf einem anderen Rechner war die Sortierung der selben Dateien auch richtig.

Mich würde interessieren, ob es noch andere Möglichkeiten gibt, die Reihenfolge zu beeinflussen. Ansonsten muss ich für weitere Tests warten, bis ich wieder so ein Problem habe.
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
beeinflussen
Buchstäblich nur solche. Wird dir aber bestimmt nicht sonderlich helfen: [list=1]
[*]FindFirstFile u.ä. Funktionen hooken - so kann deren Rückgabe beeinflusst werden und damit auch die Reihenfolge der Dateisystemobjekte. Relativ einfach zu erstellen, dafür ineffizient.
[*]NtQueryDirectoryFile hooken, mit derselben Absicht. Schwerer zu erstellen, dafür sollte man alle erwischen, die je Dateisystemobjekte auflisten wollen.
[*]ntfs.sys und/oder fastfat.sys sowie sonstige Dateisystemtreiber manipulieren/ersetzen. Für Experten.[/list]
...