批处理文件,用于压缩同一目录中的文件夹

时间:2015-05-14 07:23:40

标签: batch-file

我想使用批处理文件压缩文件夹。这是我的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文件后它应该压缩文件夹。 这个???有什么代码吗?

1 个答案:

答案 0 :(得分:0)

您需要添加ResultSet并使用GetAbsolutePathName函数 - shell.application命名空间不接受相对路径。

虽然使用睡眠是个坏主意 - 它会使脚本太慢或者会中断压缩。更好的想法是计算源和目标中的项目,因为压缩是事务性的,文件计数是鲁棒的方式检查操作是否完成。

您还可以查看我的 zipjs.bat ,它也使用 Shell.Application ,但所有内容都打包在混合FileSystemObject脚本中(它甚至会没有创建临时文件)。它能够处理相对路径,并且相对健壮(我编写的最常用的脚本之一 - 所以我有一些反馈,需要修复大量的错误:-))

此处有更多信息:How can I compress (/ zip ) and uncompress (/ unzip ) files and folders with batch file without using any external tools?

jscript\.bat