在 xp 中从批处理脚本删除临时文件

在 xp 中从批处理脚本删除临时文件

我正在寻找一个好的批处理脚本,可以快速查找并清理 Windows(尽可能多的变体)机器上所有已知的安全临时文件夹/文件(例如 Windows 临时文件夹、所有用户 IE 临时文件夹等)。我喜欢 CCleaner 之类的 UI 工具(而不是 Cleanmgr.exe),但当我尝试清理多台计算机时快速且/或以最少的参与,如果有脚本就好了。

此外,使用脚本,我可以将多个脚本串联在一起。也许一个脚本可以启动各种防病毒和/或恶意软件检测器。

谁有好的或者可以指出好的资源?

答案1

这是我编写的一个小脚本,保存在我的 USB 实用程序驱动器上...非常适合 citrix 服务器 :)

@echo off
Echo Started %time%
Echo Started %time% >> temps.txt
Echo Running for XP... >> temps.txt
Echo Running for XP...
FOR /F "tokens=*" %%G IN ('DIR /B /AD') DO IF EXIST "%%G\Local Settings\Temp\" (
    RMDIR /S /Q "%%G\Local Settings\Temp"
    MKDIR "%%G\Local Settings\Temp"
    Echo Cleared %%G\Local Settings\Temp
    Echo Cleared %%G\Local Settings\Temp >> temps.txt
)
FOR /F "tokens=*" %%G IN ('DIR /B /AD') DO IF EXIST "%%G\Local Settings\Temporary Internet Files\" (
    RMDIR /S /Q "%%G\Local Settings\Temporary Internet Files\"
    MKDIR "%%G\Local Settings\Temporary Internet Files\"
    Echo Cleared %%G\Local Settings\Temporary Internet Files\
    Echo Cleared %%G\Local Settings\Temporary Internet Files\ >> temps.txt
)
Echo Done.
Echo Running for Vista >> temps.txt
Echo Running for Vista...
FOR /F "tokens=*" %%G IN ('DIR /B /AD') DO IF EXIST "%%G\AppData\Local\Temp\" (
    RMDIR /S /Q "%%G\AppData\Local\Temp\"
    MKDIR "%%G\AppData\Local\Temp\"
    Echo Cleared %%G\AppData\Local\Temp\
    Echo Cleared %%G\AppData\Local\Temp\ >> temps.txt
)
FOR /F "tokens=*" %%G IN ('DIR /B /AD') DO IF EXIST "%%G\AppData\Local\Microsoft\Windows\Temporary Internet Files\" (
    RMDIR /S /Q "%%G\AppData\Local\Microsoft\Windows\Temporary Internet Files\"
    MKDIR "%%G\AppData\Local\Microsoft\Windows\Temporary Internet Files\"
    Echo Cleared %%G\Local Settings\Temporary Internet Files\
    Echo Cleared %%G\Local Settings\Temporary Internet Files\ >> temps.txt
)
Echo Done.
Echo Ended %time%
Echo Ended %time% >> temps.txt

使用风险自负,等等...这会删除内容。

我在 Vista 上从 Documents and Settings 文件夹或 Users 运行它。您可以轻松地在顶部放置一个 CD 命令,以便从您想要的任何位置运行它。

cd %userprofile%
cd ..

此外,根据我的经验,随时清除临时文件夹通常都是安全的。使用临时文件的程序会锁定它们,而此脚本会在该文件上出错并继续运行。

这里的 IF EXIST 行特别好,它可以阻止脚本在 NetworkService 和类似文件夹中创建文件夹,如果你没有在 Vista 或 XP 上运行它,那么该部分会非常快地运行。

在您运行脚本的任何地方创建 temps.txt 日志文件

编辑:来自 Freenode 上的 ##windows-server 的建议:问:为什么你不一开始就检测它在哪个操作系统上运行并运行相应的部分?答:我经常在离线媒体上使用该脚本,例如已提取的硬盘驱动器。

答案2

小心丢弃临时文件。一些软件安装程序会在启动期间将文件存储在那里。我的一位前任老板将重要文件存储在那里(但他对某些事情不太了解)。

在批处理文件中,执行以下操作:

DEL /S /Q "%TEMP%\*.*"

会执行您想要的操作。将其作为登录脚本运行(或一般在登录时运行)将清除每个用户的临时目录。将其作为启动脚本运行(以 .DEFAULT 运行)将清除每个计算机的临时目录。

我有一个 VBScript,用于根据临时文件的使用期限在启动和登录时清除它们。它属于客户,所以我不能在这里发布它(它是用他们的钱写的),但脚本编写者可以在几分钟内为您编写它。

我不知道是否有支持清除 IE“临时 Internet 文件”的 API。我想您可以直接删除它们,但我不会这么做。

答案3

最好的安全的清理临时目录的方法是使用 cleanmgr。缺点是您必须在每台机器上运行 sageset,或者(更简单)使用注册表项构建 ADM 文件并使用组策略将它们推送到客户端桌面。要查看的注册表项是:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches

也可以看看如何在 Windows XP 中自动运行磁盘清理工具

答案4

为什么不直接在脚本中使用 Ccleaner,因为它已经具备了您需要的所有功能。然后使用 Psexec 推送调用 Ccleaner 的脚本,然后在完成后删除 Ccleaner。您可以添加一个 .ini 文件,其中包含 Ccleaner 中所需的所有设置。这样,您就不必重新发明轮子了。一切都与重复使用有关。

相关内容