VBscripting _error

时间:2017-03-29 09:43:15

标签: vbscript

我的要求是搜索整个c:\ drive并将条目导出为.txt文件格式。 challange是用户需要在对话框中输入文件名。

以下是我创建的脚本,当我运行此脚本时,我收到错误权限被拒绝。

'On Error Resume Next
Option Explicit 'force all variables to be declared

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

wshell.ExpandEnvironmentStrings("%SYSTEMDRIVE%")

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

Recurse objFSO.GetFolder("%SYSTEMDRIVE%")
objTS.Close()

Sub Recurse(objFolder)
    Dim objFile, objSubFolder

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

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

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

1 个答案:

答案 0 :(得分:1)

系统驱动器上有一些您无法访问的文件夹。甚至不是管理员。这种行为是设计使然。

处理此问题的最简单方法可能是在程序中启用错误处理:

Sub Recurse(objFolder)
    On Error Resume Next
    ...
End Sub

但是,请注意,这会抑制所有错误,如果出现任何问题,请将您完全置于黑暗中。更好的方法是只忽略特定的错误号:

...
For Each objFile In objFolder.Files
    ...
Next
If Err.Number <> 0 Then
    If Err.Number <> 70 Then
        WScript.Echo Hex(Err.Number) & ": " & Err.Description
        'further error handling goes here
    End If
End If
...