2015-06-22 110 views
1

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

我搜索了一下,发现了一个使用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文件。

+0

既然你选择了只使用WinZip做到这一点,我不能答复你,因为我知道一个解决方案,但在WinRAR,所以我尊重你的选择,如果你改变了主意,只是告诉我 – Hackoo

+0

对不起,:(我们的服务器上只安装了winzip完整版本,我只能继续使用WinZip,不幸的是Ansgar提供的解决方案并不适用于我。 –

回答

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创建文件。

+0

我已经安装了winzip64当我运行你的代码时: Set sh = CreateObject(“WScript.Shell”) sh.Run“C:\ Program Files \ WinZip \ WINZIP64.EXE -a -sPassword F:\ WLMS_TEAM \ TOUHID \ MyPwdTmp.zip *。*”,0,True 我得到“系统m找不到指定的文件“错误。 有没有问题? –

+0

我的代码在当前目录中查找文件。检查当前目录是你认为的。同时检查目录'F:\ WLMS_TEAM \ TOUHID'是否存在。并确保WinZip可执行文件位于'%PATH%'中或者以其完整路径调用。 –

+1

@AnsgarWiechers我认为-pPassword用于Winrar,并且您应该为Winzip使用-sPassword!看到这个文档==> http://www.memecode.com/docs/winzip.html – Hackoo

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