VBS脚本解决大批量RAR文件压缩

说起来有点无聊,最近因需要处理大批量的文件夹压缩(不能压缩在一个包里)

特写了个脚本,以作辅助.

RAR很方便,它能右键批量处理压缩文件,但没有批量压缩多个包的功能.

所以,没办法(或者哪位仁兄知道办法,可告知.)也许用批处理会方便些,但我不怎么懂那个

先上代码(因为俺的垃圾空间过滤部分单词,需要用中文才能写上,造成不便,还请见谅)

 

'++++++++++++++++++++++++++
'WinRAR 批量文件夹压缩
'使用时将该脚本放至与要处理的文件夹的同级目录内
'默认处理同级目录内的所有文件夹
'使用需安装RAR压缩软件
'同时运行多个会互相影响
'++++++++++++++++++++++++++
Dim sh, fs, mg, rar
Dim folder, tfo, IsRun
Set mg=getObject("winmgmts:\\.\root\cimv2")
Set fs=CreateObject("Scripting.FilesystemObject")
Set sh=CreateObject("WScript.Shell")
Set folder=fs.getFolder(fs.GetAbsolutePathName("."))
For Each tfo In folder.SubFolders
	sh.Run "WinRAR a -ibck "& tfo.Name &".rar "& tfo.Name
	WScript.Sleep 200
	IsRun=True
	Do Until IsRun=False
		Set rar=mg.execQuery("select * from win32_process where name='WinRAR.exe'")
		If rar.Count>0 Then
			WScript.Sleep 500
		Else
			IsRun=False
		End If			
	Loop
Next

这里将脚本所在文件夹内的子文件夹依次进行压缩,名称以原文件夹名称命名。

因为如果每个文件夹压缩时都需要耗费几秒甚至更长时间的话,同时调用大量RAR进程,会使压缩很慢,很有可能导致计算机卡死。

所以这里运行一个进程之后,先判断进程是否存在,存在说明压缩还在进行,就等到压缩完后再运行下一个。

也可以将判断部分的数目改动下,就可以多进程压缩(比如,2个,5个。)