.BBS调用.BAT来创建.zip - 静默运行(没有接口)?

时间:2017-11-24 16:35:15

标签: windows batch-file vbscript zip parameter-passing

我有一个.bat文件,用于备份文件,调用.vbs并传递两个参数,如下所示:

...
ZipCMD.vbs "C:\Source" "C:\Destination\Data.zip"
...

ZipCMD.vbs包含以下代码(Credit to garbb):

Set objArgs = WScript.Arguments
Set FS = CreateObject("Scripting.FileSystemObject")
InputFolder = FS.GetAbsolutePathName(objArgs(0))
ZipFile = FS.GetAbsolutePathName(objArgs(1))

CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)

Set objShell = CreateObject("Shell.Application")
Set source = objShell.NameSpace(InputFolder).Items

numfolderitems = objShell.NameSpace(InputFolder).Items.count

objShell.NameSpace(ZipFile).CopyHere(source)

' wait until number of items in zip file is the same as in the folder we are zipping up
' also sometimes gets errors when getting folder object for zip file, probably because it is in use? so ignore these
On Error Resume Next
Do while True
    numitemsinzip = objShell.NameSpace(ZipFile).Items.count
    If Err.Number = 0 and numitemsinzip = numfolderitems Then
        Exit Do
    ElseIf Err.Number <> 0 then
        Err.Clear
    End If
    wScript.Sleep 10
Loop
On Error Goto 0

当发生压缩时,会出现常用的窗口“压缩文件”界面,并在关闭和消失之前显示进度条几分钟。

问题: vbs可以静默运行压缩(即没有接口)吗? - 我已阅读this article,其中显示了一个标记,但由于某种原因,这似乎无法复制到.zip。

后续问题:如果我正在使用的.vbs无法实现此目的,那么是否有另一种方法,仍然使用调用另一个文件/进程(?) (.vbs / .js,或其他?)并从cmd中提供两条路径?

编辑:我正在尝试在不使用第三方软件(例如7zip)的情况下实现此目的,并且只是使用本机Windows代码。

1 个答案:

答案 0 :(得分:1)

假设我迟到了近3个月,但是如果你有powershell版本5或更高版本,你可以简单地创建一个powershell脚本:

Compress-Archive "C:\Source" "C:\Destination\Data.zip"

或来自批处理文件:

powershell Compress-Archive "C:\Source" "C:\Destination\Data.zip"

另见this选项