
欢迎来到这个全新的 TechNet 专栏,在这里,Microsoft Scripting Guys 将为您解答与系统管理脚本编写有关的各种常见问题。遇到了系统脚本编写方面的问题?请将电子邮件发送到scripter@microsoft.com. 我们不能保证回答收到的所有问题,但是我们将尽最大的努力。
今天的问题:如何删除 temporary internet files 文件夹中的文件?
嗨,Scripting Guy!有没有办法使用脚本删除 Temporary Internet Files 文件夹中的所有文件呢?
-- KR
嗨,AK。知道吗,看到您的问题时,Scripting Guys 的一名成员(在此不提供姓名)想到:“嗯,不知道我的 Temporary Internet Files 文件夹中有些什么东西?”检查之后,他发现该文件夹包含 239 G 的垃圾文件;按他的话说,整个 Internet 都保存在他的硬盘上了。
换句话说,看来需要一个脚本来删除 Temporary Internet Files 文件夹中的所有文件。
唯一复杂的因素是尝试确定用户将他或她的 Temporary Internet Files 文件夹放在何处。通常,可以在用户的本地用户配置文件中找到该文件夹,比如:C:\Documents and Settings\kenmyer\Local Settings\Temporary Internet Files。但是,该文件夹并不一定非得在那里;毕竟,Windows 可能并未安装在驱动器 C 上。这表示编写该脚本的关键在于定位 Temporary Internet Files 文件夹;找到之后,删除所有文件就轻而易举了。
那么,如何定位该文件夹呢?由于 Temporary Internet Files 文件夹是一个“特殊的”文件夹(默认情况下,可以在所有 Windows 安装上找到),因此无论您如何处理该文件夹,Windows 仍然可以知道它的下落。因此,可以使用 Shell(外壳)对象——能够定位特殊的文件夹,无论其物理位置如何——来确定 Temporary Internet Files 文件夹的路径,然后使用该路径来绑定该文件夹,并删除在其中找到的所有文件。
警告:无法远程创建 Shell 对象。这表示需要作为登录或注销脚本运行该脚本,或者将其复制到远程计算机上,并使用 WMI Win32_Process 类在远程机器上运行该脚本。如需更多相关信息,可以访问嗨,Scripting Guy! 专栏(使用 Win32_Process 在远程计算机上运行 md 命令)。
让我们看一下这个脚本:
Const TEMPORARY_INTERNET_FILES = &H20&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(TEMPORARY_INTERNET_FILES)
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path & "\*.*"
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(strPath)
是的,我们知道:听了前面的介绍之后,您可能会觉得事情更复杂了,对吧?起初,我们将 TEMPORARY_INTERNET_FILES 常量设为 &H20&。需要该值来连接到 Temporary Internet Files 文件夹(稍候进行详细介绍)。然后,我们将创建 Shell 对象,并使用 Namespace(命名空间)方法定位该文件夹。出于 Shell 对象特殊的性质,我们之后调用了 Self 方法来实际连接到该文件夹;这一点就是这行代码所做的:
Set objFolderItem = objFolder.Self
这时,我们就可以确定所述的文件夹的实际路径(比如:C:\Documents and Settings\kenmyer\Local Settings\Temporary Internet Files)。如果所要知道就是这些,那么可以使用类似如下的代码行:
Wscript.Echo objFolderItem.Path
然而,我们需要使用 FileSystemObject 来删除该文件夹中的所有文件。为了实现这一点,必须向 FileSystemObject 传递一个类似如下所示的路径(使用标准通配符来表示该文件夹中的所有文件):
C:\Documents and Settings\kenmyer\Local Settings\Temporary Internet Files\*.*
然后使用该代码行构建路径:
strPath = objFolderItem.Path & "\*.*"
正如您所看到的,我们采用 Shell 对象返回的路径,然后添加 \*.*。最终将得到一个命令,告诉 FileSystemObject 删除该文件夹中的所有文件。
那么,这就是在最后两行代码所完成的任务:我们创建了 FileSystemObject 的一个实例,然后使用 DeleteFile 方法删除了所有文件。就是这样,我们清空了 Temporary Internet Files 文件夹。
当然,既然做到这步,您可能也想清空 Internet Cookies 文件夹。以下脚本可以完成这个任务:
Const COOKIES = &H21&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(COOKIES)
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path & "\*.*"
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(strPath)
顺便提一下,我们预感到只要我们一发布这个专栏就会有人开始问我们:“那么,如何连接到 My Pictures(图片收藏)文件夹?”或者“有没有办法连接到 My Recent Documents(我最近的文档)文件夹?”因此,我们预先在脚本中心脚本资源库中增加了 38 个新的脚本。这些脚本将向您展示如何使用 Shell 对象连接到各个可访问的特殊的文件夹。尽情享受吧!