65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 WSH VBScript 自定义磁盘清理

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.75/5 (3投票s)

2014年8月1日

CPOL

2分钟阅读

viewsIcon

18411

downloadIcon

353

当硬盘剩余空间不足时,执行自定义磁盘清理

引言

我需要维护一个生产服务器,当硬盘可用空间低于一定 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 

关注点

  • 任务计划程序 中创建任务时,确保脚本具有执行清理批处理文件的适当权限。
  • 要了解有关编写批处理文件的更多信息,请参阅此 链接
  • 我创建的 CleanUpDisk.vbs 脚本文件具有注释掉的调试消息代码,可以取消注释以调试脚本以进行将来的修改。
© . All rights reserved.