在 7-zip 的 .bat 文件中应使用哪些正确的标签来实现与 GUI 相同的设置?

在 7-zip 的 .bat 文件中应使用哪些正确的标签来实现与 GUI 相同的设置?

当前问题解决的来源: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 中进行选择。*

相关内容