首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将根文件夹的所有子文件夹及其内容添加到现有的Zip文件中。

将根文件夹的所有子文件夹及其内容添加到现有的Zip文件中。
EN

Stack Overflow用户
提问于 2015-01-28 19:36:50
回答 2查看 4.5K关注 0票数 0

我的目录结构类似于以下内容:

代码语言:javascript
运行
复制
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的内容添加到其中。

到目前为止,我尝试的是以下几种变体:

代码语言:javascript
运行
复制
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。第二种情况是,无论状态如何,我都希望压缩文件并将其添加到存档中;该命令提供了以下输出和错误:

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-29 15:03:41

下面是最后为我工作的命令:

代码语言:javascript
运行
复制
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使用多个线程。这通常会加快进程,特别是在处理大量文件时。

票数 2
EN

Stack Overflow用户

发布于 2015-01-28 22:05:04

我建议您看看我的zipjs.bat,它不使用任何外部软件,并且能够处理windows.But下的压缩文件--太大了,不能在这里发布。

这里有一个使用它的脚本(应该在同一个文件夹中),它可以解决您的问题,您的文件夹名为ROOT,但是如果需要,您可以更改name.And,您可以更改到zip的路径

代码语言:javascript
运行
复制
@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 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28200898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档