标题: [文件操作] 批处理中如何把一个文件添加到一个zip压缩文件的指定目录? [打印本页]
作者: Batcher 时间: 2009-4-12 14:47 标题: 批处理中如何把一个文件添加到一个zip压缩文件的指定目录?
在其它论坛看到这样一个问题,批处理中如何把一个文件添加到一个zip压缩文件的指定目录?
原文如下:
怎样用zip或pkzip的命令行模式 实现 类似WinRAR的“开关 -AP <路径> - 设置压缩文件内的路径”功能。
就是将一个文件压缩到压缩文件下的指定文件里面。例如:
有一压缩文件a.zip,里面包含文件夹b,我应该怎样将文件c.txt压缩到a.zip下的文件夹b里???
现将问题补充如下:
1、允许使用任何第三方命令行压缩工具;
2、我看过7-Zip和PKZIP的命令行帮助文档,没有发现类似的rar.exe的-ap开关;
3、google搜索没有发现有价值的信息;
4、考虑到a.zip可能很大,“解压->move->重新压缩”的方法不予考虑。
[ 本帖最后由 Batcher 于 2009-5-27 12:47 编辑 ]
作者: zqz0012005 时间: 2009-4-12 18:10
第三方压缩工具不想找。可以用vbs实现(不是很完美)- '&@cls&cscript -nologo -e:vbs "%~f0"&exit/b
- strSrc = "C:\aaa.rom" '需要被压缩的文件
- strZip = "C:\test.zip" 'zip压缩文件
- strDst = "\roms" 'zip压缩文件中的指定目录
- set ws = CreateObject("WScript.Shell")
- set oShell = CreateObject("Shell.Application")
- set oZip = oShell.NameSpace(strZip & strDst)
- oZip.CopyHere strSrc, 4+16 '参数设置无效,还是有进度条(但正好为异步等待提供了一个检验窗口)
- do 'CopyHere方法似乎是异步的,必须等待以便复制完成。
- wsh.sleep 200
- loop while ws.AppActivate("正在压缩...")
复制代码
作者: defanive 时间: 2009-4-12 18:22
可以解压后复制进去再压缩。。。
效率最低的方法。。。
作者: Batcher 时间: 2009-4-12 18:23 标题: 回复 3楼 的帖子
顶楼发帖时已经明确表示此法不予考虑
作者: Batcher 时间: 2009-4-12 19:44 标题: 回复 2楼 的帖子
ws.AppActivate("正在压缩...")
总是感觉这样的方法依赖性太强了
看看其他人有没有别的方案吧^_^
作者: zqz0012005 时间: 2009-4-14 16:21 标题: 回复 5楼 的帖子
改进了一下,根据已经复制的大小判断是否全部压缩完成- '&@cls&cscript -nologo -e:vbs "%~f0"&exit/b
- strSrc = "C:\aaa.rom" '需要被压缩的文件
- strZip = "C:\test.zip" 'zip压缩文件
- strDst = "\roms" 'zip压缩文件中的指定目录
- set fso = CreateObject("Scripting.FileSystemObject")
- intSrcSize = fso.GetFile(strSrc).Size
- strFile = fso.GetFileName(strSrc)
- set oShell = CreateObject("Shell.Application")
- 'oShell.ShellExecute "regsvr32", "/s zipfldr.dll" '重新注册可能被优化掉的zipfldr.dll
- 'wsh.sleep 1000
- set oZip = oShell.NameSpace(strZip & strDst)
- oZip.CopyHere strSrc, 4+16
- do
- wsh.sleep 200
- loop while oZip.ParseName(strFile).Size < intSrcSize
复制代码
作者: zqz0012005 时间: 2009-10-7 18:54
奇怪了,今天在某个网吧上网,发现CopyHere的参数设置是有效的。但我上次在公司电脑上测试不管参数设置成什么,还是会出现进度条。
大家帮忙测试一下。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |