将根文件夹的所有子文件夹及其内容添加到现有 Zip 文件
Add all Subfolders of a root folder and their contents to an existing Zip file
我的目录结构类似于以下内容:
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
中是否有一个文件已经存在于存档的同一位置 - 已经存档的文件可以简单地被覆盖。因此,根据我对 7Zip's Update Switch 文档的细读,我省略了所有更新选项。但我收到错误: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
我可以建议你看看我的 zipjs.bat
它不使用任何外部软件并且能够处理 windows.But 下的 zip 文件它太大 post 在这里。
这是一个使用它的脚本(应该在同一个文件夹中)并且可能会解决您的问题
您的文件夹名为 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
这是最终对我有用的命令:
D:\ROOT>7z a -tzip "D:\archive\logs_app.zip" * -aoa -mmt
我找到了一个很好的资源,最终帮助我解决了这个问题 here。我最大的问题是我没有注意命令参数和开关的顺序。
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 使用多线程。这通常会加快处理速度,尤其是当您处理大量文件时。
我的目录结构类似于以下内容:
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
中是否有一个文件已经存在于存档的同一位置 - 已经存档的文件可以简单地被覆盖。因此,根据我对 7Zip's Update Switch 文档的细读,我省略了所有更新选项。但我收到错误: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
我可以建议你看看我的 zipjs.bat 它不使用任何外部软件并且能够处理 windows.But 下的 zip 文件它太大 post 在这里。
这是一个使用它的脚本(应该在同一个文件夹中)并且可能会解决您的问题 您的文件夹名为 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
这是最终对我有用的命令:
D:\ROOT>7z a -tzip "D:\archive\logs_app.zip" * -aoa -mmt
我找到了一个很好的资源,最终帮助我解决了这个问题 here。我最大的问题是我没有注意命令参数和开关的顺序。
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 使用多线程。这通常会加快处理速度,尤其是当您处理大量文件时。