脚本在受保护的文件(例如系统文件)上停止 [英] Script stops on protected files such as system files
本文介绍了脚本在受保护的文件(例如系统文件)上停止的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
由于受保护的文件(例如系统文件,权限被拒绝"),此代码会在一段时间后停止.
有没有办法修改下面的代码,使其可以处理或绕过此类受保护的文件?
Set objFS=CreateObject("Scripting.FileSystemObject")WScript.Echo Chr(34) &完整路径"&_Chr(34) &"," &Chr(34) &文件大小"&_Chr(34) &"," &Chr(34) &文件日期修改"&_Chr(34) &"," &Chr(34) &文件创建日期"&_Chr(34) &"," &Chr(34) &文件访问日期"&铬(34)设置 objArgs = WScript.ArgumentsstrFolder = objArgs(0)设置 objFolder = objFS.GetFolder(strFolder)去(对象文件夹)子去(objDIR)如果 objDIR <>"\System Volume Information" 然后对于 objDIR.SubFolders 中的每个电子文件夹去电子文件夹下一个万一对于 objDIR.Files 中的每个 strFileWScript.Echo Chr(34) &strFile.Path &Chr(34) &"," &_Chr(34) &strFile.Size &Chr(34) &"," &_Chr(34) &strFile.DateLastModified &Chr(34) &"," &_Chr(34) &strFile.DateCreated &Chr(34) &"," &_Chr(34) &strFile.DateLastAccessed &铬(34)下一个结束子
<块引用>
然后从命令行调用它像这样.
c:\test>cscript//nologo myscript.vbs "c:\" >"C:\test\Output.csv"
解决方案
VBScript 允许错误捕获,但不如 VBA 优雅.试试下面的脚本.
On Error Resume Next'[ ... 代码 ... ]Dim test_result,除数除数 = 1 '' 没有错误'除数 = 0'' 引发错误 #11'divisor = "zero" '' 引发不同的错误test_result = 2/除数If Err.Number = 11 then ''This line must出现在点错误被引发MsgBox "处理错误:" &错误描述ElseIf Err.Number >0 那么MsgBox "错误:" &Err.Number &" " &错误描述Err.Clear ''如果你想从这里开始清理万一MsgBox "结果:" &测试结果
This code stops after a while due to protected files such as system files, "Permission Denied".
Is there a way to modify the code below so that it can handle such protected files or bypass them?
Set objFS=CreateObject("Scripting.FileSystemObject")
WScript.Echo Chr(34) & "Full Path" &_
Chr(34) & "," & Chr(34) & "File Size" &_
Chr(34) & "," & Chr(34) & "File Date modified" &_
Chr(34) & "," & Chr(34) & "File Date Created" &_
Chr(34) & "," & Chr(34) & "File Date Accessed" & Chr(34)
Set objArgs = WScript.Arguments
strFolder = objArgs(0)
Set objFolder = objFS.GetFolder(strFolder)
Go (objFolder)
Sub Go(objDIR)
If objDIR <> "\System Volume Information" Then
For Each eFolder in objDIR.SubFolders
Go eFolder
Next
End If
For Each strFile In objDIR.Files
WScript.Echo Chr(34) & strFile.Path & Chr(34) & "," &_
Chr(34) & strFile.Size & Chr(34) & "," &_
Chr(34) & strFile.DateLastModified & Chr(34) & "," &_
Chr(34) & strFile.DateCreated & Chr(34) & "," &_
Chr(34) & strFile.DateLastAccessed & Chr(34)
Next
End Sub
Then call it from the command line like this.
c:\test> cscript //nologo myscript.vbs "c:\" > "C:\test\Output.csv"
解决方案
VBScript allows error trapping, though not as gracefully as VBA. Try the script below.
On Error Resume Next
'[ ... code ... ]
Dim test_result, divisor
divisor = 1 '' No error
'divisor = 0 '' raise error #11
'divisor = "zero" '' raise a different error
test_result = 2/divisor
If Err.Number = 11 then ''This line must appear at the point error is raised
MsgBox "Handled Error: " & Err.Description
ElseIf Err.Number > 0 then
MsgBox "Error: " & Err.Number & " " & Err.Description
Err.Clear ''if you wanted to proceed clean from here
End If
MsgBox "Result: " & test_result
这篇关于脚本在受保护的文件(例如系统文件)上停止的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文