Home All Groups Group Topic Archive Search About

Windows Script that will Save Files to ZIP file



Author
11 Sep 2007 2:54 AM
M P
I have C:\Data\*.* and wanting to save it to zip file thru windows
script. Is this possible?

Author
11 Sep 2007 12:23 PM
LJB
"M P" <mponte***@gmail.com> wrote in message
news:1189479273.999620.23430@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/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
Author
17 Sep 2007 7:07 AM
M P
Have tried this one and found working on my requierement. Thanks a
lot.

Btw, another question, how about including subfolders on the zip file?
Is this possible on your provided script?

Show quote
On Sep 11, 8:23 pm, "LJB" <.> wrote:
> "M P" <> wrote in message
>
> news:1189479273.999620.23430@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...
>
> 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
Author
17 Sep 2007 12:47 PM
LJB
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

Show quote
"M P" <mponte***@gmail.com> wrote in message
news:1190012832.184304.147090@o80g2000hse.googlegroups.com...
> Have tried this one and found working on my requierement. Thanks a
> lot.
>
> 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.999620.23430@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...
>>
>> 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
>
>
Author
18 Sep 2007 1:51 AM
M P
Have tried it prompt me with an error:

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.


Show quote
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
>
> news:1190012832.184304.147090@o80g2000hse.googlegroups.com...
>
> > Have tried this one and found working on my requierement. Thanks a
> > lot.
>
> > 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.999620.23430@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...
>
> >> 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
Author
18 Sep 2007 12:08 PM
LJB
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"

Show quote
"M P" <mponte***@gmail.com> wrote in message
news:1190080271.784162.274640@o80g2000hse.googlegroups.com...
> Have tried it prompt me with an error:
>
> 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
>>
>> news:1190012832.184304.147090@o80g2000hse.googlegroups.com...
>>
>> > Have tried this one and found working on my requierement. Thanks a
>> > lot.
>>
>> > 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.999620.23430@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...
>>
>> >> 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
>
>
Author
18 Sep 2007 12:16 PM
LJB
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

Show quote
"LJB" <.> wrote in message news:e2Rohye%23HHA.1168@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"
>
> "M P" <mponte***@gmail.com> wrote in message
> news:1190080271.784162.274640@o80g2000hse.googlegroups.com...
>> Have tried it prompt me with an error:
>>
>> 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
>>>
>>> news:1190012832.184304.147090@o80g2000hse.googlegroups.com...
>>>
>>> > Have tried this one and found working on my requierement. Thanks a
>>> > lot.
>>>
>>> > 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.999620.23430@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...
>>>
>>> >> 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
>>
>>
>
>
Author
18 Sep 2007 1:12 PM
LJB
Based on http://www.rondebruin.nl/windowsxpzip.htm#folder I 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


Show quote
"LJB" <.> wrote in message news:OV0w12e%23HHA.1208@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.1168@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"
>>
>> "M P" <mponte***@gmail.com> wrote in message
>> news:1190080271.784162.274640@o80g2000hse.googlegroups.com...
>>> Have tried it prompt me with an error:
>>>
>>> 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
>>>>
>>>> news:1190012832.184304.147090@o80g2000hse.googlegroups.com...
>>>>
>>>> > Have tried this one and found working on my requierement. Thanks a
>>>> > lot.
>>>>
>>>> > 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.999620.23430@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...
>>>>
>>>> >> 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
>>>
>>>
>>
>>
>
>
Author
18 Sep 2007 1:41 PM
LJB
Sorry about the error in the previous version. Here is an improved
version...I think. I'm not quite sure it will correctly count and zip all
files in sub-folders yet.

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


Show quote
"LJB" <.> wrote in message news:u4xsRWf%23HHA.5464@TK2MSFTNGP02.phx.gbl...
> Based on http://www.rondebruin.nl/windowsxpzip.htm#folder I 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 message news:OV0w12e%23HHA.1208@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.1168@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"
>>>
>>> "M P" <mponte***@gmail.com> wrote in message
>>> news:1190080271.784162.274640@o80g2000hse.googlegroups.com...
>>>> Have tried it prompt me with an error:
>>>>
>>>> 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
>>>>>
>>>>> news:1190012832.184304.147090@o80g2000hse.googlegroups.com...
>>>>>
>>>>> > Have tried this one and found working on my requierement. Thanks a
>>>>> > lot.
>>>>>
>>>>> > 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.999620.23430@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...
>>>>>
>>>>> >> 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
>>>>
>>>>
>>>
>>>
>>
>>
>
>
Author
22 Sep 2007 7:17 AM
M P
Have tried the script.The script gets the files on Data1, Data2 and
Data3 folders and saves them on Data.zip. Can we just copy all files
and folders on Data1 and other folders as-is to the zip file? When
extracting the zip file, you will still get the exact folder
structure. I appreciate your help and hoping to solve this script.

Show quote
On Sep 18, 9:41 pm, "LJB" <.> wrote:
> Sorry about the error in the previous version. Here is an improved
> version...I think. I'm not quite sure it will correctly count and zip all
> files in sub-folders yet.
>
> 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 messagenews:u4xsRWf%23HHA.5***@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.1***@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.1168@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"
>
> >>> "M P" <mponte***@gmail.com> wrote in message
> >>>news:1190080271.784162.274640@o80g2000hse.googlegroups.com...
> >>>> Have tried it prompt me with an error:
>
> >>>> 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
>
> >>>>>news:1190012832.184304.147090@o80g2000hse.googlegroups.com...
>
> >>>>> > Have tried this one and found working on my requierement. Thanks a
> >>>>> > lot.
>
> >>>>> > 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.999620.23430@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...
>
> >>>>> >> 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
Author
11 Sep 2007 2:19 PM
McKirahan
"M P" <mponte***@gmail.com> wrote in message
news:1189479273.999620.23430@d55g2000hsg.googlegroups.com...
> I have C:\Data\*.* and wanting to save it to zip file thru windows
> script. Is this possible?

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
Author
17 Sep 2007 7:09 AM
M P
Thanks for your response but the script is kinda complicated. I have
found the previous post which is much simpler.\

Show quote
On Sep 11, 10:19 pm, "McKirahan" <N***@McKirahan.com> wrote:
> "M P" <mponte***@gmail.com> wrote in message
>
> news:1189479273.999620.23430@d55g2000hsg.googlegroups.com...
>
> > I have C:\Data\*.* and wanting to save it to zip file thru windows
> > script. Is this possible?
>
> 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

AddThis Social Bookmark Button