【问题标题】:How to get a list of sub-folders and their files, ordered by folder-names如何获取按文件夹名称排序的子文件夹及其文件的列表
【发布时间】:2011-03-27 17:24:33
【问题描述】:

我可以使用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”也可以在列表末尾]

谢谢,

阿塔拉

【问题讨论】:

    标签: command-line directory dos


    【解决方案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
    

    【讨论】:

    • 如果我只想要文件夹名称怎么办?
    • 你会这么好心并更新你的答案如何只获取文件而不是文件夹?
    • @HemusSan 只有列出的文件是这样的:dir /a:-d /s /b | sort
    【解决方案2】:

    嘿,伙计,你为什么要使用这个?

    dir /s/b/o:gn > f.txt (打错了)

    你不知道'/o'中的'g'是什么吗??

    检查一下:http://www.computerhope.com/dirhlp.htm 或 dir /?寻求目录帮助

    你应该改用这个:

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

    【讨论】:

    【解决方案3】:

    dir /b /a-d /s *.* 将满足您的要求。

    【讨论】:

      【解决方案4】:

      将所有文件和文件夹列表放入文本文件的命令如下:

      例如:dir /b /s |排序 > 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 并运行它。您将在该目录中获得一个列表

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-05-08
            • 2016-07-24
            • 1970-01-01
            • 1970-01-01
            • 2018-04-02
            相关资源
            最近更新 更多