在VBScript中使用CopyHere的.zip文件是否有大小限制?

时间:2013-11-15 19:27:01

标签: vbscript unzip

我有一个vbscript,可以将多个zip文件提取到不同的位置。该代码适用于除一个文件之外的所有文件这个不起作用的文件恰好大于6GB。我正在处理的下一个最大的文件大约是3.5GB。

以下是代码片段;

strFileDest = "path\to\some\dir1"
strZIPname = "file1.zip" 
Call UnPack(strFileDest, strZIPname)

strFileDest = "path\to\some\dir2"
strZIPname = "file2.zip" 
Call UnPack(strFileDest, strZIPname)

Function UnPack(strZIPdest, strZIPname)
  Dim intOptions, objShell, objSource, objTarget

  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objShell = CreateObject("Shell.Application")
  sSourceFile = objFSO.GetAbsolutePathName(strZIPname)
  Set objSource = objShell.NameSpace(sSourceFile).Items()
  Set objTarget = objShell.NameSpace(strZIPdest)

 intOptions = 256
 If objFSO.FolderExists(strZIPdest) Then
   objTarget.CopyHere objSource, intOptions
 Else
   MsgBox "Cannot complete unzip for " & strZIPname & ". The destination _
   directory (" & strZIPdest & ") could not be located.", 0, "Invalid"
 End If
End Function


我采用了较小的拉链,并将其重命名为不会复制的拉链。使用新大小,脚本将解压缩该文件,证明该文件的其余脚本有效。我还通过手动提取它来验证zip是有效的。当我用它指向大型zip时运行脚本时,我也没有收到错误(我没有使用 On Error resume next )。

2 个答案:

答案 0 :(得分:0)

是的。据我所知,它大约2GB,虽然它没有记录,但我以前遇到过它。如果需要压缩大于此值的内容,请使用命令行版本7zip。

Here is a VBScript wrapper I wrote for 7zip.

答案 1 :(得分:0)

从Windows Vista,支持zip64阅读。但是压缩文件夹的创建似乎仅限于经典的zip格式。 4GB最大文件大小,zip文件中65535个条目。而且,微软已经在windows xp中记录了大于2GB的压缩文件夹的问题。