这里是Function Create_WinRar_Archive(Source,Target_Archive,Password)用Winrar的rar.exe命令行压缩文件夹。
我们可以通过两种方式调用这个函数:
如果你想创建一个没有密码的存档,所以我们这样称呼它:
Call Create_WinRar_Archive(Source,Target_Archive,"")
或者如果你想为这个存档设置一个密码,我们称之为:
Call Create_WinRar_Archive(Source,Target_Archive,Password)
这是一个压缩图片文件夹
的例子
Option Explicit
Dim ws,Source,Target_Archive,Password
Set ws = CreateObject("Wscript.Shell")
Source = ws.ExpandEnvironmentStrings("%userprofile%\pictures")
Target_Archive = "C:\BackupImages.rar"
Password = "123456"
Call Create_WinRar_Archive(Source,Target_Archive,Password)
Wscript.echo "All files are archived successfully !"
ws.run "Explorer " & Target_Archive
'******************************************************************************************************
Function Create_WinRar_Archive(Source,Target_Archive,Password)
'This function executes the command line
'version of WinRAR and reports whether
'the archive exists after WinRar exits.
'If it exists then it returns true. If
'not it returns an error message.
'------------------------------------------------------------------------------------
Dim oFSO,oShell,aScriptFilename,sScriptFilename
Dim sWorkingDirectory,ProgramFiles,sWinRarLocation
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oShell = CreateObject("Wscript.Shell")
'--------Find Working Directory--------
aScriptFilename = Split(Wscript.ScriptFullName, "\")
sScriptFilename = aScriptFileName(Ubound(aScriptFilename))
sWorkingDirectory = Replace(Wscript.ScriptFullName, sScriptFilename, "")
'-------Ensure we can find Winrar.exe------
If oFSO.FileExists(sWorkingDirectory & " " & "Winrar.EXE") Then
sWinRarLocation = ""
ElseIf oFSO.FileExists(oShell.ExpandEnvironmentStrings("%ProgramFiles%\Winrar\rar.exe")) Then
sWinRarLocation = oShell.ExpandEnvironmentStrings("%programfiles%\Winrar\")
ElseIf oFSO.FileExists(oShell.ExpandEnvironmentStrings("%ProgramFiles(x86)%\Winrar\rar.exe")) Then
sWinRarLocation = oShell.ExpandEnvironmentStrings("%programfiles(x86)%\Winrar\")
Else
Create_WinRar_Archive = "Error: Couldn't find Winrar.EXE"
Exit Function
End If
'--------------------------------------
'The Command "A" Means ==> add to archive
'To create a WinRar file with the specified name after command A (archive) and the switches -ep1 (exclude base directory from names) and -r (recursive)
If Password = "" Then
oShell.Run """" & sWinRarLocation & "rar.exe"" A -ep1 -r """ & _
Target_Archive & """ """ & Source & """",0,True
Else
'The -hp<password> switch: To use a password
oShell.Run """" & sWinRarLocation & "rar.exe"" A -ep1 -r -hp"&Password&" """ & _
Target_Archive & """ """ & Source & """",0,True
End If
If oFSO.FileExists(Target_Archive) Then
Create_WinRar_Archive = 1
Else
Create_WinRar_Archive = "Error: Creating archives failed !"
MsgBox Create_WinRar_Archive,16,Create_WinRar_Archive
End If
End Function
'****************************************************************************************************