我正在使用一种外部方法来验证XML文件。该方法的问题在于它会打开XML文件,并且永远不会关闭它,因此我必须以某种方式关闭该文件。有谁知道VBScript是否可以做到这一点?
答案 0 :(得分:1)
危险!关闭另一个进程的打开文件句柄可能会导致数据丢失。仅当您确切地知道自己在做什么时,才执行此操作。您已被警告。
VBScript本身无法关闭文件句柄,但是您可以使用handle
命令行实用程序来实现此目的。
filename = "C:\path\to\your.xml"
Set sh = CreateObject('WScript.Shell')
Set p = sh.Exec("handle """ & filename & """")
pout = p.StdOut.ReadAll
Set re = New RegExp
re.Pattern = "pid: (\d+)\s+type: file\s+([a-f0-9]+):"
re.IgnoreCase = True
For m In re.Execute(pout)
pid = m.Submatches(0)
hnd = m.Submatches(1)
Next
If Not(IsEmpty(pid) And IsEmpty(hnd)) Then
sh.Run "handle -c " & hnd & " -y -p " & pid, 0, True
End If
如果该实用程序不在您的PATH中,则必须指定该程序的完整路径。此外,该程序还会要求您在首次运行EULA时接受它,因此,请手动运行一次以执行此操作,或者在命令行中添加参数-accepteula
。