ОПАСНОСТЬ! Закрытие дескриптора открытого файла другого процесса может привести к потере данных. Делайте это только тогда, когда вы точно знаете , что вы делаете. Вы были предупреждены.
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, вы должны указать полный путь к программе. Кроме того, программа просит вас принять лицензионное соглашение при первом запуске, поэтому либо запустите его один раз вручную, либо добавьте параметр -accepteula
в командную строку (и).