当前问题解决的来源:Sevenip.osdn.jp但是除了 -t7z -mx9 -m0=LZMA2 -mmt=1 -md=1024m -v10m 之外我无法让任何东西工作。
我一直在适应Enteleform 的代码来自这个答案10 年前发布的类似问题。此代码目前有效,但我希望对其进行一些澄清和调整。批处理文件只需将选定的文件/文件夹拖到批处理中即可创建档案。我所做的调整专门用于解决更改代码以适应 7z 而不是 zip 的问题,以及以下行中的标签:
!sevenZip! A -T7Z -M0=LZMA2 -MX9 !archivePath! !sourcePath!
最终,我想使用 GUI 中的以下设置:
存档格式:7-zip 变成 -t7z
压缩级别:Ultra 变成 -mx9
压缩方法:LZMA2 变成 -m0=LZMA2
字典大小:1024MB 变成 -md=1024m
字大小:273 变成 -mfb273
实心块尺寸:坚硬的
CPU 线程数:1 变成 -mmt=1
拆分为卷:1024M 变成 -v1024M
代码:
@Echo OFF
SetLocal EnableDelayedExpansion
Rem // 7-Zip Executable Path
Set sevenZip="C:\Program Files\7-Zip\7z.exe"
Rem // START: NewLine Variable Hack
Set newLine=^
Rem // END: NewLine Variable Hack !! DO NOT DELETE 2 EMPTY LINES ABOVE !!
Rem // Set ErrorLog Variables
Set errorCount=0
Set separator=--------------------------------------------------------
Set errorLog=!newLine!!newLine!!separator!!newLine!!newLine!
Set errorPrefix=ERROR @:
Set successMessage=All Files Were Successfully Archived
Rem // Loop Through Each Argument
SetLocal DisableDelayedExpansion
for %%x in (%*) do (
Rem // Use Current Argument To set File, Folder, & Archive Paths
SetLocal DisableDelayedExpansion
Set filePath="%%~x"
Set directoryFiles="%%~x\*"
Set archivePath="%%~x.7z"
SetLocal EnableDelayedExpansion
Rem // Source Is A Folder
if exist !directoryFiles! (
Set sourcePath=!directoryFiles!
)
Rem // Source Is A File
if not exist !directoryFiles! (
Set sourcePath=!filePath!
)
Rem // Print Separator To Divide 7-Zip Output
echo !newLine!!newLine!!separator!!newLine!!newLine!
Rem // Add Files To Zip Archive
!sevenZip! a -aoa -t7z -mx9 -m0=LZMA2 -md=1024m -v10m !archivePath! !sourcePath!
Rem // Log Errors
if ErrorLevel 1 (
Set /A errorCount=errorCount+1
Set errorLog=!errorLog!!newLine!!errorPrefix!!sourcePath!
)
)
Rem // Print ErrorLog
if !errorCount!==0 (
Set errorLog=!errorLog!!newLine!!successMessage!
)
Echo !errorLog!!newLine!!newLine!!newLine!
Rem // Keep Window Open To View ErrorLog
pause
答案1
固定块大小限制为2^64 - 1
字节,如此主题在 7-Zip 的 SourceForge 上。
2^64-1 | 字节 |
---|---|
18446744073709551615 | 字节 乙 |
18014398509481983 | 千字节 基布 |
17592186044415 | 兆字节 密布 |
17179869183 | 吉比字节 吉布 |
16777215 | 太字节 硼化钛 |
16384 | 拍字节 丙二醛 |
7-Zip 没有 pebibytes 的缩写,因此我们将限制设置为 16777215 tebibytes,如下所示:
-ms=16777215t
这应该相当于Solid
在 GUI 中进行选择。*