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

Batch file 将根文件夹的所有子文件夹及其内容添加到现有Zip文件中,batch-file,zip,7zip,Batch File,Zip,7zip,我有一个类似于以下内容的目录结构: ROOT --> Site_01 --> 2015 --> 01 --> more subfolders and files (thousands of log files) --> Site_02 --> 2015 --> 01 --> more subfolders and files (thousan

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

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)
D:\ROOT>7z -u D:\archive\logs_app.zip *  
D:\ROOT>7z -up2q2r2x2y2z2w2 D:\archive\logs_app.zip *  
在其他地方,我有一个可能存在的zip文件,它的内容反映了上面描述的文件夹结构。我想做的是编写一个批处理文件的脚本,这样它就可以将
根目录下的所有内容压缩到可能已经存在的zip文件中

如果zip文件不存在,我想创建它,如果它存在,我想简单地将
ROOT
的内容添加到它

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

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)
D:\ROOT>7z -u D:\archive\logs_app.zip *  
D:\ROOT>7z -up2q2r2x2y2z2w2 D:\archive\logs_app.zip *  
我不在乎
根目录中是否有一个文件已经存在于归档文件的同一位置-可以简单地覆盖已经归档的文件。因此,根据我对文档的阅读,我省略了所有更新选项。但是我得到了错误:
命令行错误:开关太短:-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

我可以建议你看看我的表吗 它不使用任何外部软件,并且能够在windows下处理zip文件。但是它太大了,无法在这里发布

下面是一个使用它的脚本(应该在同一个文件夹中),它可能会解决您的问题 您的文件夹名为ROOT,但如果需要,您可以更改名称。您还可以更改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 

以下是最终对我有效的命令:

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\u app.zip”
告诉7Zip我要添加文件的现有存档的路径。
4.
*
告诉7Zip我想从当前目录向现有存档添加任何文件。
5.
-aoa
告诉7Zip用源目录中的任何内容覆盖存档中任何匹配的现有文件注意:在许多情况下,这可能是危险的;无法恢复被覆盖的文件

6.
-mmt
告诉7Zip使用多线程。这通常会加快处理过程,尤其是在处理大量文件时。

您遇到了什么问题?thusfar,你能展示一下你的进展吗?@rojo,我用一个例子和结果更新了我原来的帖子,很抱歉一开始就把它删掉了。