Vbscript搜索所有具有扩展名的文件并将其保存到CSV

Vbscript搜索所有具有扩展名的文件并将其保存到CSV,vbscript,Vbscript,我正在尝试编写一个脚本,搜索C:\及其所有子文件夹中的特定扩展名,并将所有主题保存到CSV文件中。我尝试过这个方法,但没有效果: Set objFSO = CreateObject("Scripting.FileSystemObject") objStartFolder = "C:\" Set objFolder = objFSO.GetFolder(objStartFolder) Wscript.Echo objFolder.GetExtensionName("*.txt") Set co

我正在尝试编写一个脚本,搜索C:\及其所有子文件夹中的特定扩展名,并将所有主题保存到CSV文件中。我尝试过这个方法,但没有效果:

Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = "C:\"

Set objFolder = objFSO.GetFolder(objStartFolder)
Wscript.Echo objFolder.GetExtensionName("*.txt")

Set colFiles = objFolder.Files

For Each objFile in colFiles
If objFile.Extension = "pfx" Then
    Wscript.Echo objFile.Name
    End If
Next
Wscript.Echo

ShowSubfolders objFSO.GetFolder(objStartFolder)

Sub ShowSubFolders(Folder)
    For Each Subfolder in Folder.SubFolders
        Wscript.Echo Subfolder.Path
        Set objFolder = objFSO.GetFolder(Subfolder.Path)
        Set colFiles = objFolder.Files
        For Each objFile in colFiles
            Wscript.Echo objFile.Name
        Next
        Wscript.Echo
        ShowSubFolders Subfolder
    Next

Set WScript = CreateObject("WScript.Shell")

End Sub
我认为我在这里走的路不对。我对vb脚本一点也不精通,它只是碰巧是我唯一可以使用的东西。

给你:

Option Explicit 'force all variables to be declared

Const ForWriting = 2
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")

Dim objTS 'Text Stream Object
Set objTS = objFSO.OpenTextFile("C:\Output.txt", ForWriting, True)

Recurse objFSO.GetFolder("C:\")
objTS.Close()

Sub Recurse(objFolder)
    Dim objFile, objSubFolder

    For Each objFile In objFolder.Files
        If LCase(objFSO.GetExtensionName(objFile.Name)) = "pfx" Then
            objTS.WriteLine(objfile.Path)
        End If
    Next

    For Each objSubFolder In objFolder.SubFolders
        Recurse objSubFolder
    Next
End Sub

我知道这有点晚了,但要得到这份名单是很难的。最简单的方法是使用命令行:

首先确定要在其中放置目录的文件,如下所示:

set FileList="C:\path\path\file.csv"
set Start="C:\path\path"
for /F "usebackq" %i in (`dir /s/b "%Start%\*.pfx"`) do echo %~pi>>%filelist%
其次,按如下方式标识起始目录:

set FileList="C:\path\path\file.csv"
set Start="C:\path\path"
for /F "usebackq" %i in (`dir /s/b "%Start%\*.pfx"`) do echo %~pi>>%filelist%
然后像这样填充:

set FileList="C:\path\path\file.csv"
set Start="C:\path\path"
for /F "usebackq" %i in (`dir /s/b "%Start%\*.pfx"`) do echo %~pi>>%filelist%
完成并以交互方式完成


PS-邮件删除了背景标记。这是通常在波浪线下的字符,它们应该包含完整的目录命令。假设一个替代者!对于backtick勾号,drectory命令应该是
!目录/s/b“%Start%\*.pfx”

更晚,但更简单(且快速:0)):

打开一个CMD,CD到有问题的目录


DIR/S/A-D/B C:\*.something>>D:\ListOf.Files

非常酷。我甚至不知道你能做这样的事。不过,对于使用此选项开始使用的人(高级用户可能已经知道这一点):在设置开始变量时,您需要使用反斜杠set start=“C:\path\path\”结束字符串,否则,您将得到一个“未找到文件”,因为路径和搜索项像“C:\path\path*.pfx”一样连接在一起. 此外,修饰符“%~pi”将只写入文件的路径。“%~fi”写入整个限定路径。有关更多帮助,请在cmd中选中“for/?”。非常感谢。好。。。这是我第一次也是最后一次尝试在我的评论中使用HTML。忽略我之前评论中的前置标记。当我意识到我的愚蠢时,我的5分钟已经过去了。