创建能够写出文本文件的VBS文件

时间:2011-11-03 20:14:20

标签: file vbscript io directory

我有一个VBS文件,我试图用它来确定某个目录中的文件夹和文件。我相信我已经正确编写了代码,但每当我尝试写出文件或当前目录时,我都会得到一个空白文本文档,只写出根目录。任何建议都将不胜感激。

Dim NewFile

Function GetFolders (strFolderPath)
Dim objCurrentFolder, colSubfolders, objFolder, files

Set objCurrentFolder = objFSO.GetFolder(strFolderPath)
Set colSubfolders = objCurrentFolder.SubFolders

For Each objFolder In colSubfolders

NewFile.WriteLine("    - " & objFolder.Path)

Set files = folder.Files
For each folderIdx In files
    NewFile.WriteLine("        - "& folderIdx.Name)
Next

Call GetFolders (objFolder.Path)

Next

End Function

Dim fso, sFolder

Set fso = CreateObject("Scripting.FileSystemObject")
sFolder = Wscript.Arguments.Item(0)
If sFolder = "" Then
  Wscript.Echo "No Folder parameter was passed"
  Wscript.Quit
End If
Set NewFile = fso.CreateTextFile(sFolder&"\FileList.txt", True)

NewFile.WriteLine(sFolder)

Call GetFolders(sFolder)

NewFile.Close

1 个答案:

答案 0 :(得分:2)

您没有充分注意变量命名。您的脚本是一个很好的例子,说明为什么所有VBScripts都应该从该行开始: -

Option Explicit

这将突出显示尚未声明的所有变量,这些变量反过来将指出变量命名中的拼写错误和不一致。我就是这样写的: -

Option Explicit

Dim msFolder : msFolder = Wscript.Arguments.Item(0)

If msFolder = "" Then     
    Wscript.Echo "No Folder parameter was passed"     
    Wscript.Quit     
End If

Dim mfso : Set mfso = CreateObject("Scripting.FileSystemObject")
Dim moTextStream : Set moTextStream = mfso.CreateTextFile(msFolder & "\FileList.txt", True) 

moTextStream.WriteLine(msFolder) 

WriteFolders mfso.GetFolder(msFolder)

moTextStream.Close 

Sub WriteFolders(oParentFolder) 

    Dim oFolder
    For Each oFolder In oParentFolder.SubFolders  

        moTextStream.WriteLine("    - " & oFolder.Path) 

        Dim oFile
        For Each oFile In oFolder.Files  
            moTextStream.WriteLine("        - " & oFile.Name) 
        Next 

        WriteFolders oFolder

    Next 

End Sub