So erhalten Sie eine Liste der Unterordner und ihrer Dateien, sortiert nach Ordnernamen

71

Kann ich über die dirBefehlszeile eine Liste der Unterordner und ihrer Dateien abrufen, die nach Ordnernamen und nicht nur nach Dateinamen sortiert sind?

mit

dir / s / b / o: gn> f.txt

Ich bekomme zuerst alle Unterordner und erst dann alle Unterdateien, zB:

 d:\root0\root1\folderA
 d:\root0\root1\folderB
 d:\root0\root1\file00.txt
 d:\root0\root1\file01.txt
 d:\root0\root1\folderA\fileA00.txt
 d:\root0\root1\folderA\fileA01.txt
 d:\root0\root1\folderB\fileB00.txt
 d:\root0\root1\folderB\fileB01.txt

Aber ich möchte bekommen -

d:\root0\root1\file00.txt
d:\root0\root1\file01.txt
d:\root0\root1\folderA
d:\root0\root1\folderA\fileA00.txt
d:\root0\root1\folderA\fileA01.txt
d:\root0\root1\folderB
d:\root0\root1\folderB\fileB00.txt
d:\root0\root1\folderB\fileB01.txt

["file00.txt" und "file01.txt" können auch am Ende der Liste stehen]

Vielen Dank,

Atara

Atara
quelle

Antworten:

94

Wie wäre es mit sort?

dir /b /s | sort

Hier ist ein Beispiel, mit dem ich getestet habe:


dir /s /b /o:gn

d:\root0
d:\root0\root1
d:\root0\root1\folderA
d:\root0\root1\folderB
d:\root0\root1\file00.txt
d:\root0\root1\file01.txt
d:\root0\root1\folderA\fileA00.txt
d:\root0\root1\folderA\fileA01.txt
d:\root0\root1\folderB\fileB00.txt
d:\root0\root1\folderB\fileB01.txt

dir /s /b | sort

d:\root0
d:\root0\root1
d:\root0\root1\file00.txt
d:\root0\root1\file01.txt
d:\root0\root1\folderA
d:\root0\root1\folderA\fileA00.txt
d:\root0\root1\folderA\fileA01.txt
d:\root0\root1\folderB
d:\root0\root1\folderB\fileB00.txt
d:\root0\root1\folderB\fileB01.txt

Verwenden Sie den folgenden /A:DParameter , um nur Verzeichnisse abzurufen:

dir /a:d /s /b | sort
Zylindrisch
quelle
Was ist, wenn ich nur Ordnernamen möchte?
Rommel Paras
Würdest du so nett sein und deine Antwort aktualisieren, wie du nur Dateien und keine Ordner bekommst?
Hemus San
6
@HemusSan Nur Auflistung von Dateien wäre dies:dir /a:-d /s /b | sort
Timm
10

Hej Mann, warum benutzt du das?

dir / s / b / o: gn> f.txt (falsch)

Weißt du nicht, was das 'g' in '/ o' ist?

Überprüfen Sie dies heraus: http://www.computerhope.com/dirhlp.htm oder dir /? für dir Hilfe

Sie sollten dies stattdessen verwenden:

dir / s / b / o: n> f.txt (rechts)

appsomobile
quelle
1
Ich bin mir nicht sicher, warum die Upvotes - das ist eindeutig und nachweislich FALSCH. pastebin.com/qCUu4AHq
Cylindric
6

dir /b /a-d /s *.* wird Ihre Anforderung erfüllen.

Tamal Ghosh
quelle
4

Der Befehl zum Einfügen einer Liste aller Dateien und Ordner in eine Textdatei lautet wie folgt:

ZB: dir / b / s | sort> ListOfFilesFolders.txt

Amar HR
quelle
1

Wechseln Sie in der Eingabeaufforderung zu dem Hauptverzeichnis, für das Sie die Liste erstellen möchten, und geben Sie den Befehlsbaum / f ein

Samamedh
quelle
0

Erstellen Sie eine VBS-Datei und kopieren Sie den gesamten folgenden Code. Ändern Sie den Speicherort des Verzeichnisses nach Ihren Wünschen.

Dim fso
Dim ObjOutFile

Set fso = CreateObject("Scripting.FileSystemObject")

Set ObjOutFile = fso.CreateTextFile("OutputFiles.csv")

ObjOutFile.WriteLine("Type,File Name,File Path")

GetFiles("YOUR LOCATION")

ObjOutFile.Close

WScript.Echo("Completed")

Function GetFiles(FolderName)
    On Error Resume Next

    Dim ObjFolder
    Dim ObjSubFolders
    Dim ObjSubFolder
    Dim ObjFiles
    Dim ObjFile

    Set ObjFolder = fso.GetFolder(FolderName)
    Set ObjFiles = ObjFolder.Files

    For Each ObjFile In ObjFiles
    ObjOutFile.WriteLine("File," & ObjFile.Name & "," & ObjFile.Path)
    Next

    Set ObjSubFolders = ObjFolder.SubFolders

    For Each ObjFolder In ObjSubFolders

        ObjOutFile.WriteLine("Folder," & ObjFolder.Name & "," & ObjFolder.Path)


        GetFiles(ObjFolder.Path)
    Next

End Function

Speichern Sie den Code als vbs und führen Sie ihn aus. Sie erhalten eine Liste in diesem Verzeichnis

Teemo
quelle