我的目录结构类似于以下内容:
ROOT
--> Site_01
--> 2015
--> 01
--> more subfolders and files (thousands of log files)
--> Site_02
--> 2015
--> 01
--> more subfolders and files (thousands of log files)
--> Site_03
--> 2015
--> 01
--> more subfolders and files (thousands of log files)
在其他地方,我可能有一个现有的zip文件,其内容反映了上面描述的文件夹结构。我想做的是编写一个批处理文件,这样它就可以将ROOT
下的所有内容压缩到可能已经存在的zip文件中。
如果zip文件不存在,我想要创建它,如果它确实存在,我只想将ROOT
的内容添加到其中。
到目前为止,我尝试的是以下几种变体:
D:\ROOT>7z -u D:\archive\logs_app.zip *
D:\ROOT>7z -up2q2r2x2y2z2w2 D:\archive\logs_app.zip *
我不在乎ROOT
中是否有一个文件已经存在于存档中的同一位置--已经存档的文件可以简单地被覆盖。因此,根据我对7 7Zip更新开关文档的仔细阅读,我忽略了所有的更新选项。但我得到了错误:Command Line Error: Too short switch:-u
。第二种情况是,无论状态如何,我都希望压缩文件并将其添加到存档中;该命令提供了以下输出和错误:
7-Zip [64] 9.38 beta Copyright (c) 1999-2014 Igor Pavlov 2015-01-03
Command Line Error:
Unsupported command:
D:\archive\logs_app.zip
发布于 2015-01-29 15:03:41
下面是最后为我工作的命令:
D:\ROOT>7z a -tzip "D:\archive\logs_app.zip" * -aoa -mmt
我找到了一个很好的资源,最终帮助我解决了这个问题,这里。我最大的问题是我没有注意命令参数和开关的排序。
(1) 7z a
告诉7Zip添加文件。
2. -tzip
告诉7Zip使用标准zip格式存档文件,而不是7Zip格式或iso映像。
3. "D:\archive\logs_app.zip"
告诉7Zip我要向其添加文件的现有存档的路径。
4. *
告诉7Zip,我希望从当前目录向现有存档中添加任何文件。
5. -aoa
告诉7Zip用源目录中的任何内容覆盖存档中的任何匹配的现有文件。注意:在许多情况下,这可能是危险的;没有办法恢复覆盖的文件!
6. -mmt
告诉7Zip使用多个线程。这通常会加快进程,特别是在处理大量文件时。
发布于 2015-01-28 22:05:04
我建议您看看我的zipjs.bat,它不使用任何外部软件,并且能够处理windows.But下的压缩文件--太大了,不能在这里发布。
这里有一个使用它的脚本(应该在同一个文件夹中),它可以解决您的问题,您的文件夹名为ROOT,但是如果需要,您可以更改name.And,您可以更改到zip的路径
@echo off
rd ./temp_root >nul 2>&1
md temp_root
call zipjs.bat list -source C:\myZip.zip -flat yes | find /i "myZip.zip\ROOT" >nul 2>&1 && (
call zipjs.bat unZipItem -source C:\myZip.zip\ROOT -destination ./temp_root -keep no
)
rd ./temp_root >nul 2>&1
call zipjs.bat addToZip -source .\ROOT -destination C:\myZip.zip
https://stackoverflow.com/questions/28200898
复制相似问题