This item slightly modified should be able to do it.
http://groups.google.com/group/microsoft.public.scripting.vbscript/msg/41362909383ba85c?dmode=source
I'm not sure you can copy all files in a folder at once. You may have to
loop through them.
I have modified the above somewhat.
Const MyZip = "C:\test.zip"
Const File1 = "C:\Data\test1.txt"
Const File2 = "C:\Data\test2.txt"
'-------------- create empty zip file ---------
CreateObject("Scripting.FileSystemObject") _
.CreateTextFile(MyZip, True) _
.Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)
'-------------- zip the files ------------------
With CreateObject("Shell.Application")
'add files
.NameSpace(MyZip).CopyHere File1
.NameSpace(MyZip).CopyHere File2
End With
wScript.Sleep 1000
LJB
Here's the URL of a scriptable zip program: http://www.7-zip.org/
Will this help?
Option Explicit
'*
'* Declare Variables
'*
Const cVBS = "7z.vbs"
Const cEXE = "7z.exe"
Const cFOL = "C:\Data\*.*" '= path of files to zip
Const cBAT = "7z_.bat"
Const cZIP = "7z_.zip"
Const cTXT = "7z_.txt"
Const cLOG = "7z_.log"
'*
'* Declare Variables
'*
Dim strDIR
strDIR = WScript.ScriptFullName
strDIR = Left(strDIR,InStrRev(strDIR,"\"))
Dim intFIL
intFIL = 0
Dim strFIL
Dim strFOL
strFOL = Replace(cFOL,"*.*","")
'*
'* Declare Objects
'*
Dim objCTF
Dim objFIL
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objGFO
Dim objOTF
Dim objWSS
'*
'* Delete Files
'*
If objFSO.FileExists(strDIR & cTXT) Then
objFSO.DeleteFile(strDIR & cTXT)
End If
If objFSO.FileExists(strDIR & cBAT) Then
objFSO.DeleteFile(strDIR & cBAT)
End If
If objFSO.FileExists(strDIR & cLOG) Then
objFSO.DeleteFile(strDIR & cLOG)
End If
If objFSO.FileExists(strDIR & cZIP) Then
objFSO.DeleteFile(strDIR & cZIP)
End If
'*
'* Identify Files
'*
Set objOTF = objFSO.OpenTextFile(strDIR & cTXT,2,True)
Set objGFO = objFSO.GetFolder(strFOL)
Set objFIL = objGFO.Files
For Each strFIL in objFIL
objOTF.WriteLine(strFOL & strFIL.Name)
intFIL = intFIL + 1
Next
Set objFIL = Nothing
Set objGFO = Nothing
Set objOTF = Nothing
'*
'* Create Batch File
'*
Set objCTF = objFSO.CreateTextFile(strDIR & cBAT,true)
objCTF.WriteLine(cEXE & " a " & cZIP & " @" & cTXT & " >> " & cLOG)
objCTF.WriteLine(cEXE & " l " & cZIP & " >> " & cLOG)
Set objCTF = Nothing
'*
'* Run Batch File
'*
Set objWSS = CreateObject("WScript.Shell")
objWSS.Run "%comspec% /C " & cBAT,7,True
Set objWSS = Nothing
'*
'* Destroy Objects
'*
Set objFSO = Nothing
'*
'* Finish Message
'*
MsgBox intfil & " files zipped.",vbInformation,cVBS
Btw, another question, how about including subfolders on the zip file?
Is this possible on your provided script?
On Sep 11, 8:23 pm, "LJB" <.> wrote:
> "M P" <> wrote in message
>
> news:1189479273....@d55g2000hsg.googlegroups.com...
>
> >I have C:\Data\*.* and wanting to save it to zip file thru windows
> > script. Is this possible?
>
> This item slightly modified should be able to do it.
>
> http://groups.google.com/group/microsoft.public.scripting.vbscript/ms...
On Sep 11, 10:19 pm, "McKirahan" <N...@McKirahan.com> wrote:
> "M P" <mponte...@gmail.com> wrote in message
LJB
"M P" <mpon...@gmail.com> wrote in message
news:1190012832.1...@o80g2000hse.googlegroups.com...
Object required: 'NameSpace(...)'
Code 800A01A8
my Files are:
sFile1 = "C:\Data1"
sFile2 = "C:\Data2"
sFile3 = "C:\Data3"
These are folders with subfolders and files. Hope you might help.
On Sep 17, 8:47 pm, "LJB" <.> wrote:
> It worked for me with a folder of a few small files but seemed to fail with
> large files. I'm not sure why that would be.
>
> LJB
>
> "M P" <mponte...@gmail.com> wrote in message
sFile1 = "C:\Data1"
sFile2 = "C:\Data2\test.txt"
"M P" <mpon...@gmail.com> wrote in message
news:1190080271.7...@o80g2000hse.googlegroups.com...
"LJB" <.> wrote in message news:e2Rohye%23HHA...@TK2MSFTNGP02.phx.gbl...
Option Explicit
Dim ZipFile, SrcFldrs, Fldr
Const FOF_CREATEPROGRESSDLG = &H0&
SrcFldrs = Array("C:\Data1", "C:\Data2", "C:\Data3")
ZipFile = "C:\Data.zip"
'Create empty Zip File
CreateObject("Scripting.FileSystemObject") _
.CreateTextFile(ZipFile, True) _
.Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)
With CreateObject("Shell.Application")
For each Fldr in SrcFldrs
'Copy the files to the compressed folder
.NameSpace(ZipFile).CopyHere .NameSpace(Fldr).Items, FOF_CREATEPROGRESSDLG
'Keep script waiting until Compressing is done
On Error Resume Next
Do Until .NameSpace(ZipFile).Items.Count = .NameSpace(Fldr).Items.Count
wScript.Sleep 1000
Loop
On Error GoTo 0
Next
End With
"LJB" <.> wrote in message news:OV0w12e%23HHA...@TK2MSFTNGP05.phx.gbl...
Option Explicit
Dim ZipFile, SrcFldrs, Fldr, iFiles
Const FOF_CREATEPROGRESSDLG = &H0&
SrcFldrs = Array("C:\Data1", "C:\Data2", "C:\Data3")
ZipFile = "C:\Data.zip"
'Create empty Zip File
CreateObject("Scripting.FileSystemObject") _
.CreateTextFile(ZipFile, True) _
.Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)
iFiles = 0
With CreateObject("Shell.Application")
For each Fldr in SrcFldrs
'Copy the files to the compressed folder
.NameSpace(ZipFile).CopyHere .NameSpace(Fldr).Items, FOF_CREATEPROGRESSDLG
iFiles = iFiles + .NameSpace(Fldr).Items.Count
'Keep script waiting until Compressing is done
On Error Resume Next
Do Until .NameSpace(ZipFile).Items.Count = iFiles
wScript.Sleep 1000
Loop
On Error GoTo 0
Next
End With
"LJB" <.> wrote in message news:u4xsRWf%23HHA...@TK2MSFTNGP02.phx.gbl...
> > Based onhttp://www.rondebruin.nl/windowsxpzip.htm#folderI got the
> > following to work. It will compress folders with sub-folders.
>
> > Option Explicit
>
> > Dim ZipFile, SrcFldrs, Fldr
>
> > Const FOF_CREATEPROGRESSDLG = &H0&
>
> > SrcFldrs = Array("C:\Data1", "C:\Data2", "C:\Data3")
> > ZipFile = "C:\Data.zip"
>
> > 'Create empty Zip File
> > CreateObject("Scripting.FileSystemObject") _
> > .CreateTextFile(ZipFile, True) _
> > .Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)
>
> > With CreateObject("Shell.Application")
>
> > For each Fldr in SrcFldrs
> > 'Copy the files to the compressed folder
> > .NameSpace(ZipFile).CopyHere .NameSpace(Fldr).Items,
> > FOF_CREATEPROGRESSDLG
>
> > 'Keep script waiting until Compressing is done
> > On Error Resume Next
> > Do Until .NameSpace(ZipFile).Items.Count = .NameSpace(Fldr).Items.Count
> > wScript.Sleep 1000
> > Loop
> > On Error GoTo 0
> > Next
> > End With
>
> > "LJB" <.> wrote in messagenews:OV0w12e%23HHA...@TK2MSFTNGP05.phx.gbl...
> >>I haven't tried it yet but here is a link to something that is supposed to
> >>zip a folder.http://www.rondebruin.nl/windowsxpzip.htm#folder
>
> >> "LJB" <.> wrote in message
> >>news:e2Rohye%23HHA...@TK2MSFTNGP02.phx.gbl...
> >>>I tried something similar to the following. If C:\Data1 contained a few
> >>>small files it would work for me and I'd end up with all the files in one
> >>>.zip as I expected. If the files were large I'd end up with a valid zip
> >>>file only containing C:\Data2\test.txt and another odd named file without
> >>>an extension. Opening it in a text editor it would appear to be a zip
> >>>file but after adding the .zip extension it still would not open with
> >>>WinZip. I don't have any idea what might be wrong.
>
> >>> sFile1 = "C:\Data1"
> >>> sFile2 = "C:\Data2\test.txt"
>