Как получить список подпапок и их файлов, упорядоченный по именам папок - PullRequest
69 голосов
/ 10 августа 2010

Можно ли использовать командную строку dir для получения списка подпапок и их файлов, упорядоченных по именам папок, а не только по именам файлов?

с помощью

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

Сначала я получаю все подпапки и только потом все подпапки, например ::

 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

Но я хочу получить -

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" и "file01.txt" также могут находиться в конце списка]

Спасибо

Атар

Ответы [ 6 ]

92 голосов
/ 24 ноября 2011

Как насчет использования sort?

dir /b /s | sort

Вот пример, который я тестировал:


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

Чтобы просто получить каталоги, используйте параметр /A:D:

dir /a:d /s /b | sort
9 голосов
/ 14 декабря 2012

Эй, чувак, зачем ты это используешь?

dir / s / b / o: gn> f.txt (неправильный)

Разве вы не знаете, что это за 'g' в '/ o' ??

Проверьте это: http://www.computerhope.com/dirhlp.htm или dir /?для справки dir

Вы должны использовать это вместо:

dir / s / b / o: n> f.txt (правый)

5 голосов
/ 05 апреля 2012

dir /b /a-d /s *.* выполнит ваше требование.

3 голосов
/ 29 ноября 2016

Команда для помещения списка всех файлов и папок в текстовый файл выглядит следующим образом:

Например: dir / b / s |sort> ListOfFilesFolders.txt

1 голос
/ 25 января 2017

В командной строке перейдите в главный каталог, для которого вы хотите получить список ... и введите дерево команд / f

0 голосов
/ 17 июля 2013

создать VBS-файл и скопировать весь код ниже.Измените местоположение каталога на любое место.

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

Сохраните код как vbs и запустите его.вы получите список в этом каталоге

...