Google 网上论坛不再支持新的 Usenet 帖子或订阅项。历史内容仍可供查看。

Windows Script that will Save Files to ZIP file

已查看 104 次
跳至第一个未读帖子

M P

未读,
2007年9月10日 22:54:332007/9/10
收件人
I have C:\Data\*.* and wanting to save it to zip file thru windows
script. Is this possible?

LJB

未读,
2007年9月11日 08:23:332007/9/11
收件人

"M P" <mpon...@gmail.com> 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/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


McKirahan

未读,
2007年9月11日 10:19:462007/9/11
收件人
"M P" <mpon...@gmail.com> 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?

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

M P

未读,
2007年9月17日 03:07:122007/9/17
收件人
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....@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...

M P

未读,
2007年9月17日 03:09:122007/9/17
收件人
Thanks for your response but the script is kinda complicated. I have
found the previous post which is much simpler.\

On Sep 11, 10:19 pm, "McKirahan" <N...@McKirahan.com> wrote:
> "M P" <mponte...@gmail.com> wrote in message

LJB

未读,
2007年9月17日 08:47:202007/9/17
收件人
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" <mpon...@gmail.com> wrote in message

news:1190012832.1...@o80g2000hse.googlegroups.com...

M P

未读,
2007年9月17日 21:51:112007/9/17
收件人
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

LJB

未读,
2007年9月18日 08:08:302007/9/18
收件人
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" <mpon...@gmail.com> wrote in message

news:1190080271.7...@o80g2000hse.googlegroups.com...

LJB

未读,
2007年9月18日 08:16:142007/9/18
收件人
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...

LJB

未读,
2007年9月18日 09:12:292007/9/18
收件人
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...@TK2MSFTNGP05.phx.gbl...

LJB

未读,
2007年9月18日 09:41:372007/9/18
收件人
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 message news:u4xsRWf%23HHA...@TK2MSFTNGP02.phx.gbl...

M P

未读,
2007年9月22日 03:17:302007/9/22
收件人
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.

> > 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"
>

0 个新帖子