使用 WSH VBScript 自定义磁盘清理






4.75/5 (3投票s)
当硬盘剩余空间不足时,执行自定义磁盘清理
引言
我需要维护一个生产服务器,当硬盘可用空间低于一定 GB 时,我必须清理临时文件,以保持服务器的最佳性能。 临时文件的位置和类型可能随时间而变化。 因此,我决定使用 WSH VBScript 来确定硬盘空间,然后在磁盘可用空间低于一定 GB 时要求它运行自定义批处理文件。 WSH 脚本将使用 Windows 任务计划程序定期运行。
背景
我假设本文的读者了解 WSH 和 批处理文件 的一些基础知识。 还有许多其他方法可以实现磁盘清理。 我选择 WSH 是因为它更容易使用它访问 Windows 系统资源,创建批处理文件以执行自定义清理操作也更容易维护。 本文中的示例是针对 Windows7 操作系统给出的。
使用脚本
要使用我的脚本,请解压缩本文中给出的文件,并按照下面提到的步骤操作
步骤 1 将脚本复制到文件夹
获取 CleanUpDisk.vbs 文件,并将其放置在一个文件夹中,例如 C:\CleanUpDisk。
步骤 2 创建批处理文件并测试清理操作
创建一个批处理文件 (Custom.bat) 以执行清理操作。 通过在命令行中键入如下所示的命令来测试脚本和批处理文件。
上述参数检查 C: 驱动器的可用磁盘空间是否小于或等于 15 GB,然后执行批处理文件 Custom.bat。
步骤 3 创建具有适当参数的计划任务
使用 Windows 任务计划程序计划一个定期任务,以按用户要求的周期性间隔执行脚本。 任务应以管理员权限运行,通过选中 使用最高权限运行 选项,如下所示,使其顺利运行。
在任务计划程序的 操作 选项卡中,使用您要监视的驱动器、磁盘可用空间大小(以 GB 为单位)和要执行的批处理文件名指定 添加参数(可选) 选项。 在 开始位置(可选) 中,指定批处理文件的位置。
脚本如何工作
脚本检查命令行参数。
如果参数计数正确,则提取驱动器名称和批处理文件路径; 否则,向用户显示语法帮助。
Select Case WScript.Arguments.Count
Case 3
'+++++++++++++++++++++++++++++++++++++++
'Convert drive letter to upper case.
'+++++++++++++++++++++++++++++++++++++++
strDriveToMonitor = UCase (Wscript.Arguments(0))
strFreeSpaceNeeded = Wscript.Arguments(1)
strBatchFileToRun = Wscript.Arguments(2)
Case Else
'++++++++++++++++++++++++++++++
' Call the display syntax help routine.
'++++++++++++++++++++++++++++++
Syntax
End Select
接下来,获取 WMI 服务对象,并查询计算机以获取机器中所有可用的逻辑磁盘。
Set objWMIService = GetObject( "winmgmts://./root/cimv2" )
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48)
循环遍历集合,直到磁盘名称与命令行参数匹配,然后确定磁盘的可用空间大小并执行批处理文件。
For Each objItem in colItems
If objItem.Name = strDriveToMonitor Then
'+++++++++++++++++++
'Check for the specified free space in GB
' objItem.FreeSpace retuns the free disk space in bytes.
'+++++++++++++++++++
intFreeSpaceinGB = Int( 0.5 + ( objItem.FreeSpace / 1073741824 ))
If ( intFreeSpaceinGB <= Int(strFreeSpaceNeeded)) Then
'+++++++++++++++++++
'Run the batch file
'+++++++++++++++++++
createobject("wscript.shell").Run strBatchFileToRun
End If
End If
Next