【问题标题】:Need help dealing with subfolders [duplicate]需要帮助处理子文件夹[重复]
【发布时间】:2017-03-21 07:31:01
【问题描述】:

所以我想制作一个 .vbs 来编辑文件夹中的所有 .txt。这是我使用的代码,文件夹是C:\test folder

Const ForReading = 1
Const ForWriting = 2

newline = ""
line = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")

objStartFolder = "C:\test folder\"

Dim lineCount : lineCount = 0
Dim firstContent : firstContent = ""

Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files

For Each objFile in colFiles
    If LCase(objFSO.GetExtensionName(objFile)) = "txt" Then
        lineCount = 0
        firstContent = ""

        FileName = objStartFolder & objFile.Name

        Set objStream = objFSO.OpenTextFile(FileName, ForReading)
        Do Until objStream.AtEndOfStream
            lineCount = lineCount + 1
            firstContent = firstContent & objStream.ReadLine & vbCrLf
            If lineCount = line Then 
                firstContent = firstContent & newline & vbCrLf
            End If
        Loop
        Set objStream = objFSO.OpenTextFile(FileName, ForWriting)
        objStream.WriteLine firstContent
        objStream.Close 
    End If
Next

它有效。并将所有文本文件更改为我想让他们说的内容,但是当我在C:\test folder 中创建一个名为SF (C:\test folder\SF) 的文件夹时,SF 中的所有文本文件都不会更改。如何让它与子文件夹一起使用?

【问题讨论】:

    标签: text vbscript


    【解决方案1】:

    递归是一个调用自身的函数。它是用来走树的。

    ProcessFolder DirName
    
    Sub ProcessFolder(FolderPath)
    '    On Error Resume Next
        Set fldr = fso.GetFolder(FolderPath)
    
        Set Fls = fldr.files
    
        For Each thing in Fls
             msgbox Thing.Name & " " & Thing.path 
        Next
    
        Set fldrs = fldr.subfolders
        For Each thing in fldrs
            ProcessFolder thing.path
        Next
    
    End Sub
    

    【讨论】:

    • 我是用这个替换我的 .vbs 还是添加它?
    • 两者都没有,你可以从中学习。我为什么要写你的​​代码?
    • 第 5 行出错。“需要对象:objFSO”。我要放 Set objFSO = CreateObject("Scripting.FileSystemObject") 吗?
    • 省略所有非必要部分。所以是的,你这样做。您还需要设置初始目录(Dirname)。为什么会这样,我将使用 C:\windows(始终存在),它会为您提供 10,000 个消息框以供单击。您可以设置为您机器上的文件夹。
    • 这行得通(谢谢!),但我如何将它修改为我的原始脚本?我应该在“For Each thing in Fls”和“Next”(显示消息框的位置)之间添加它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多