我想使用批处理文件压缩文件夹。这是我的zip.bat代码:
CScript zip.vbs E:\app E:\app.zip
zip.vbs具有以下代码:
Set objArgs = WScript.Arguments
InputFolder = objArgs(0)
ZipFile = objArgs(1)
'Create empty ZIP file.
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
objShell.NameSpace(ZipFile).CopyHere(source)
'Required!
wScript.Sleep 2000000
这段代码正确地管理了文件夹,但我不想提及任何驱动器名称。我希望在任何驱动器中,如果我保持我的bat文件n app文件夹然后在运行bat文件后它应该压缩文件夹。 这个???有什么代码吗?
答案 0 :(得分:0)
您需要添加ResultSet
并使用GetAbsolutePathName函数 - shell.application命名空间不接受相对路径。
虽然使用睡眠是个坏主意 - 它会使脚本太慢或者会中断压缩。更好的想法是计算源和目标中的项目,因为压缩是事务性的,文件计数是鲁棒的方式检查操作是否完成。
您还可以查看我的 zipjs.bat ,它也使用 Shell.Application ,但所有内容都打包在混合FileSystemObject
脚本中(它甚至会没有创建临时文件)。它能够处理相对路径,并且相对健壮(我编写的最常用的脚本之一 - 所以我有一些反馈,需要修复大量的错误:-))
jscript\.bat