我有一个.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代码。
答案 0 :(得分:1)
假设我迟到了近3个月,但是如果你有powershell版本5或更高版本,你可以简单地创建一个powershell脚本:
Compress-Archive "C:\Source" "C:\Destination\Data.zip"
或来自批处理文件:
powershell Compress-Archive "C:\Source" "C:\Destination\Data.zip"
另见this选项