首页 > 解决方案 > 停止填充临时 Internet 文件的 VBS 脚本

问题描述

我有一个快速创建大量临时 Internet 文件的 .vbs 脚本。我怎样才能减少这种情况?它是一个 Windows Server 2016 盒子

我曾尝试使用 IE > 工具 > 临时 Intranet 文件对此进行限制....但这不起作用。我怀疑它是因为没有打开实际的浏览器。.vbs 文件由每小时的 Windows 计划任务触发。它使用 HTTP 协议连接到 XML 源,如下所示:

Set objxml = CreateObject("Msxml2.DOMDocument")
objxml.setProperty "SelectionLanguage", "XPath"
objXML.async =  False
objXML.Load url 

然后它遍历 XML,将数据插入数据库,然后完成。这样做的结果是每小时在这个位置有大约 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

标签: windowsvbscriptscheduled-tasksbatch-processingtemporary-files

解决方案


除非另有说明,否则 DOMDocument 使用主要为用户交互应用程序开发的 WinINET API。导致您遇到的问题的缓存文件是由于WinINET 的缓存行为而创建的,简而言之:可以缓存的所有内容都必须缓存。

作为替代方案,您可以通过将属性设置为 来强制您的DomDocument对象使用 WinHTTP 。与 WinINET 不同,WinHTTP 是为服务器端应用程序设计的,因此不会缓存任何内容。似乎更适合您的环境。ServerHTTPRequestTrue

Set objxml = CreateObject("Msxml2.DOMDocument")
objxml.setProperty "SelectionLanguage", "XPath"
objxml.setProperty "ServerHTTPRequest", True
objXML.async = False
objXML.Load url 

相关链接


推荐阅读