列出文件夹和子文件夹中的文件,并将结果输出到每个父文件夹的多个文件中

问题描述:

我正在使用代码列出文件夹中的文件。列出文件夹和子文件夹中的文件,并将结果输出到每个父文件夹的多个文件中

Dim fso 
Dim ObjOutFile 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set ObjOutFile = fso.CreateTextFile(GetFiles(FolderName) & "_"&"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 

我得到输出_OutputFiles.csv

如果我跑我想要的输出文件夹中的脚本

New Folder (3)_OutputFiles.csv 
New Folder (2)_OutputFiles.csv 

与列出的所有文件。

请建议如何实现,以便我分别获得每个父文件夹的输出。

+0

SO不是代码(重新)写入服务。到目前为止您尝试了什么,以及您需要哪些特殊问题? –

+0

@Ansgar Wiechers - 我想为每个父文件夹获取多个输出。我不知道在上面的代码中把这个条件放在哪里。 For Each ObjFolder in(MyLocation) ObjOutFile = fso.CreateTextFile(ObjFolder.Name&“_”&“OutputFiles.csv”) –

+0

显然,在处理输出文件的代码周围。 –

您必须在获取父文件夹名称之后移动输出文件的定义,并包含文件夹的.Name属性。

Dim fso 
Dim ObjOutFile 

Set fso = CreateObject("Scripting.FileSystemObject") 
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 ObjOutFile = fso.CreateTextFile(GetFiles(FolderName.Name) & "_"&"OutputFiles.csv") 
     ObjOutFile.WriteLine("Type,File Name,File Path") 
    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