停止填充临时 Internet 文件的 VBS 脚本
Stop a VBS Script filling up temp Internet files
我有一个 .vbs 脚本可以快速创建大量临时 Internet 文件。我怎样才能减少这个?它是一个 Windows Server 2016 box
我已经尝试使用 IE > 工具 > 临时 Intranet 文件对此设置限制...但是这不起作用。我怀疑是因为没有打开实际的浏览器。 .vbs 文件由 Windows 定时任务触发。它使用 HTTP 协议连接到 XML 源,如下所示:
Set objxml = CreateObject("Msxml2.DOMDocument")
objxml.setProperty "SelectionLanguage", "XPath"
objXML.async = False
objXML.Load url
然后遍历XML,将数据插入到DB中,然后结束。结果是这个位置每小时大约有 40MB 的文件:
C:\Users\[theUser]\AppData\Local\Microsoft\Windows\INetCache\IE
正如我上面所说。我已经以 [theUser] 身份登录服务器并将上限设置为 200MB,但它不遵守此规定。我如何才能阻止此进程破坏 [theUser] 的临时 Internet 文件位置?
已编辑:如果您不支持代理 IMO,则公认的解决方案更好。我选择 运行 高权限的 WST 并这样做:
call dumpAllFilesInFolder("C:\Users\[theUser]\AppData\Local\Microsoft\Windows\INetCache\IE")
function dumpAllFilesInFolder(theFullPath)
dim objFS, curFile, objFolder, objFiles
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFS.GetFolder(theFullPath)
Set objFiles = objFolder.Files
For each curFile in objFiles
objFS.DeleteFile(curFile)
Next
end function
除非另有说明,否则 DOMDocument 使用主要为用户交互应用程序开发的 WinINET API。导致您遇到的问题的缓存文件是由于WinINET's cache behavior而创建的,简而言之:所有可以缓存的都必须缓存。
作为替代方案,您可以通过将 ServerHTTPRequest
属性 设置为 True
来强制 DomDocument
对象使用 WinHTTP。与 WinINET 不同,WinHTTP 是为服务器端应用程序设计的,因此不会缓存任何内容。似乎更适合您的环境。
Set objxml = CreateObject("Msxml2.DOMDocument")
objxml.setProperty "SelectionLanguage", "XPath"
objxml.setProperty "ServerHTTPRequest", True
objXML.async = False
objXML.Load url
相关链接
我有一个 .vbs 脚本可以快速创建大量临时 Internet 文件。我怎样才能减少这个?它是一个 Windows Server 2016 box
我已经尝试使用 IE > 工具 > 临时 Intranet 文件对此设置限制...但是这不起作用。我怀疑是因为没有打开实际的浏览器。 .vbs 文件由 Windows 定时任务触发。它使用 HTTP 协议连接到 XML 源,如下所示:
Set objxml = CreateObject("Msxml2.DOMDocument")
objxml.setProperty "SelectionLanguage", "XPath"
objXML.async = False
objXML.Load url
然后遍历XML,将数据插入到DB中,然后结束。结果是这个位置每小时大约有 40MB 的文件:
C:\Users\[theUser]\AppData\Local\Microsoft\Windows\INetCache\IE
正如我上面所说。我已经以 [theUser] 身份登录服务器并将上限设置为 200MB,但它不遵守此规定。我如何才能阻止此进程破坏 [theUser] 的临时 Internet 文件位置?
已编辑:如果您不支持代理 IMO,则公认的解决方案更好。我选择 运行 高权限的 WST 并这样做:
call dumpAllFilesInFolder("C:\Users\[theUser]\AppData\Local\Microsoft\Windows\INetCache\IE")
function dumpAllFilesInFolder(theFullPath)
dim objFS, curFile, objFolder, objFiles
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFS.GetFolder(theFullPath)
Set objFiles = objFolder.Files
For each curFile in objFiles
objFS.DeleteFile(curFile)
Next
end function
除非另有说明,否则 DOMDocument 使用主要为用户交互应用程序开发的 WinINET API。导致您遇到的问题的缓存文件是由于WinINET's cache behavior而创建的,简而言之:所有可以缓存的都必须缓存。
作为替代方案,您可以通过将 ServerHTTPRequest
属性 设置为 True
来强制 DomDocument
对象使用 WinHTTP。与 WinINET 不同,WinHTTP 是为服务器端应用程序设计的,因此不会缓存任何内容。似乎更适合您的环境。
Set objxml = CreateObject("Msxml2.DOMDocument")
objxml.setProperty "SelectionLanguage", "XPath"
objxml.setProperty "ServerHTTPRequest", True
objXML.async = False
objXML.Load url
相关链接