3

我必须压缩文件夹中的所有文件并使其受密码保护。

我用谷歌搜索并找到了一种使用 Windows 内置功能的解决方案。代码如下:

folder1 = "F:\WLMS_TEAM\TOUHID\Script"
zipfile = "F:\WLMS_TEAM\TOUHID\MyTmp.zip"

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.OpenTextFile(zipfile, 8, True).Write "PK" & Chr(5) & Chr(6) _
  & String(18, Chr(0))

Set ShellApp = CreateObject("Shell.Application")
Set zip = ShellApp.NameSpace(zipfile)
zip.CopyHere folder1
WScript.Sleep 2000

我可以设置密码保护吗?

或者,如果您可以帮助使用其他代码来使用 WinZip(而不是任何其他工具)来实现相同的目的。

或者可以使用单独的代码来密码保护预先生成的 zip 文件。

4

2 回答 2

1

您可以像这样在命令行上运行 WinZip:

winzip32.exe -a -s"Password" "C:\path\to\your.zip" *.*

包装在 VBScript 中:

Set sh = CreateObject("WScript.Shell")
sh.Run "winzip32.exe -a -s""Password"" ""C:\path\to\your.zip"" *.*", 0, True

我认为该Shell.Application对象不允许创建受密码保护的 zip 文件。

于 2015-06-22T08:21:37.427 回答
0

经过长时间的搜索、试验和错误,我得到了如下所示的工作:我希望出来寻找类似问题的人可能会发现它很有用。

strWinZipDir = "C:\Program Files\WinZip\WINZIP64.exe"
strZipFileToCreate = LocalPath & "FileName.zip"
strFilesToZip  = LocalPath & "*.txt"

Set objFSO = CreateObject("Scripting.FileSystemObject")

strWinZip = objFSO.GetFile(strWinZipDir).ShortPath
strCommand = strWinzip & " -min -a -s""Password"" -r """ & strZipFileToCreate & """ " & strFilesToZip

Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec(strCommand)

Do While objExec.Status = 0
 Wscript.Sleep(200)
Loop

Set objShell = Nothing
Set objExec = Nothing
Set objFSO = Nothing
于 2015-06-25T06:04:57.607 回答