71 votes

Comment obtenir une liste des sous-dossiers et leurs fichiers, commandé par dossier-noms

Puis-je utiliser "dir" ligne de commande pour obtenir une liste des sous-dossiers et leurs fichiers, commandé par le dossier des noms, et pas seulement des noms de fichiers ?

à l'aide de

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

J'ai d'abord obtenir tous les sous-dossiers, et seulement alors, tous les sous-fichiers, par ex.:

 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

Mais je veux obtenir -

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" et "file01.txt" peut-être aussi à la fin de la liste]

Merci,

Atara

95voto

Cylindric Points 3244

Comment sur l'utilisation d' sort?

dir /b /s | sort

Voici un exemple que j'ai testé avec:


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

10voto

appsomobile Points 69

Hej homme, pourquoi êtes-vous en utilisant cette ?

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

Vous ne savez pas ce que c'est que 'g' dans '/s' ??

Check this out: http://www.computerhope.com/dirhlp.htm ou dir /? pour dir aider

Vous devriez être en utilisant ceci à la place:

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

6voto

Tamal Ghosh Points 21

dir /b /a-d /s *.* va répondre à votre exigence.

0voto

Atara Points 892

J'ai renoncé. Je vais écrire un programme en ce sens . . .

0voto

Teemo Points 3

créer un fichier vbs et copier tout le code ci-dessous. Modifier l'emplacement du répertoire où vous voulez.

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

Enregistrez le code vbs et de l'exécuter. vous obtiendrez une liste dans ce répertoire

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X