Zip a folder up

前端 未结 3 1813
Happy的楠姐
Happy的楠姐 2020-12-15 00:34

I am trying to ZIP up a folder in VBScript and it doesn\'t seem to work. I\'m certain I am creating the header file correctly.

It creates the actual file correctly,

相关标签:
3条回答
  • 2020-12-15 01:03

    you could call an external zip file via %comspec%

    oShell.Run "%comspec% /c c:\windows\7za.exe a " & oFile &".zip " & oFile & " -tzip",,True

    Source http://www.scriptlook.com/zip-large-files-in-a-directory-2/

    0 讨论(0)
  • 2020-12-15 01:20

    The answer I found here. The magic is in the last Do..Loop where the script wait the Shell to do it job.

    ArchiveFolder "sub\foo.zip", "..\baz"
    
    Sub ArchiveFolder (zipFile, sFolder)
    
        With CreateObject("Scripting.FileSystemObject")
            zipFile = .GetAbsolutePathName(zipFile)
            sFolder = .GetAbsolutePathName(sFolder)
    
            With .CreateTextFile(zipFile, True)
                .Write Chr(80) & Chr(75) & Chr(5) & Chr(6) & String(18, chr(0))
            End With
        End With
    
        With CreateObject("Shell.Application")
            .NameSpace(zipFile).CopyHere .NameSpace(sFolder).Items
    
            Do Until .NameSpace(zipFile).Items.Count = _
                     .NameSpace(sFolder).Items.Count
                WScript.Sleep 1000 
            Loop
        End With
    
    End Sub
    
    0 讨论(0)
  • 2020-12-15 01:27

    Check your argument. folder must be the path to the object you want to put into the zip file. If it's a folder object you have to use folder.Path, because the default method of folder objects is Name, and CopyHere can't find the object with just the name.

    You could add some debugging statements to your function to check that:

    WScript.Echo TypeName(folder)
    If fso.FolderExists(folder) Then
      WScript.Echo folder & " exists."
    Else
      WScript.Echo folder & " doesn't exist."
    End If
    
    0 讨论(0)
提交回复
热议问题