如何用VBScript实现文件夹静默压缩?(解压已解决)
解决VBScript静默压缩文件夹不显示进度框的问题
要实现完全静默的压缩操作,需要给CopyHere方法传递正确的参数组合,同时确保zip文件创建完成后再执行复制逻辑。以下是修改后的可用方案:
修改后的压缩脚本
wvar1 = WScript.CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2) & "\Dumps" wvar2 = WScript.CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2) & "\Dumps.zip" set wshell = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") ArchiveFolder wvar2, wvar1 Sub ArchiveFolder (zipFile, sFolder) With CreateObject("Scripting.FileSystemObject") zipFile = .GetAbsolutePathName(zipFile) sFolder = .GetAbsolutePathName(sFolder) ' 创建空的zip文件结构 With .CreateTextFile(zipFile, True) .Write Chr(80) & Chr(75) & Chr(5) & Chr(6) & String(18, chr(0)) End With End With ' 等待zip文件完全写入磁盘,避免后续操作异常 WScript.Sleep 500 With CreateObject("Shell.Application") ' 组合参数实现静默:4(隐藏进度框)+16(自动确认覆盖)+1024(隐藏错误提示) .NameSpace(zipFile).CopyHere .NameSpace(sFolder).Items, 4 + 16 + 1024 Do Until .NameSpace(zipFile).Items.Count = .NameSpace(sFolder).Items.Count WScript.Sleep 1000 Loop End With End Sub
关键修改说明
参数组合生效:
单独使用4参数可能被系统交互逻辑覆盖,组合以下参数可确保静默:4:不显示压缩进度对话框16:遇到文件覆盖等确认框时自动选择“全部是”1024:压缩出错时不弹出错误提示界面
将这些参数相加后传递给CopyHere,就能实现无弹窗的静默压缩。
增加文件就绪等待:
创建空zip文件后,添加WScript.Sleep 500等待文件系统完成文件写入,避免后续操作因文件未就绪导致参数失效或异常。
内容的提问来源于stack exchange,提问作者Tathastu Pandya
相关产品推荐
相关产品推荐

