Как получить список подпапок и их файлов, упорядоченных по именам папок

Могу ли я использовать командную строку 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" также могут быть в конце списка]

Спасибо,

Атар

Ответ 1

Как насчет использования 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

Ответ 2

Хей, почему ты этим пользуешься?

dir/s/b/o: gn > f.txt (неверный)

Разве вы не знаете, что такое "g" в "/o"??

Отметьте это: http://www.computerhope.com/dirhlp.htm или dir/? для справочной службы

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

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

Ответ 3

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

Ответ 4

Команда поместить список всех файлов и папок в текстовый файл выглядит так:

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

Ответ 5

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

Ответ 6

создать файл 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 и запустите его. вы получите список в этом каталоге