我的要求是搜索整个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
答案 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
...