2016-11-07 116 views
-1

所以我想制作一个.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中创建了一个名为SFC:\test folder\SF)的文件夹时,SF中的所有文本文件都不会更改。我如何使它与子文件夹一起使用?

回答

0

递归是一个调用自己的函数。它用于走树。

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 
+0

我是否用这个替换我的.vbs或者添加它? –

+0

也没有,你从中学习。我为什么要写你的​​代码? – 2016-11-07 20:56:23

+0

第5行的错误。“Object required:objFSO”。我是否将Set objFSO = CreateObject(“Scripting.FileSystemObject”)? –