当前位置: 首页 > 工具软件 > 7-Zip > 使用案例 >

关于压缩工具7-zip的7z脚本用法

孟新知
2023-12-01

关于压缩工具7-zip的7z脚本用法

一、shell命令行



L:\Program Files\7-Zip>7z

7-Zip 21.01 alpha (x64) : Copyright (c) 1999-2021 Igor Pavlov : 2021-03-09

Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [@listfile]


<Commands>
  a : Add files to archive
  b : Benchmark
  d : Delete files from archive
  e : Extract files from archive (without using directory names)
  h : Calculate hash values for files
  i : Show information about supported formats
  l : List contents of archive
  rn : Rename files in archive
  t : Test integrity of archive
  u : Update files to archive
  x : eXtract files with full paths

<Switches>
  -- : Stop switches and @listfile parsing
  -ai[r[-|0]]{@listfile|!wildcard} : Include archives
  -ax[r[-|0]]{@listfile|!wildcard} : eXclude archives
  -ao{a|s|t|u} : set Overwrite mode
  -an : disable archive_name field
  -bb[0-3] : set output log level
  -bd : disable progress indicator
  -bs{o|e|p}{0|1|2} : set output stream for output/error/progress line
  -bt : show execution time statistics
  -i[r[-|0]]{@listfile|!wildcard} : Include filenames
  -m{Parameters} : set compression Method
    -mmt[N] : set number of CPU threads
    -mx[N] : set compression level: -mx1 (fastest) ... -mx9 (ultra)
  -o{Directory} : set Output directory
  -p{Password} : set Password
  -r[-|0] : Recurse subdirectories
  -sa{a|e|s} : set Archive name mode
  -scc{UTF-8|WIN|DOS} : set charset for for console input/output
  -scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : set charset for list files
  -scrc[CRC32|CRC64|SHA1|SHA256|*] : set hash function for x, e, h commands
  -sdel : delete files after compression
  -seml[.] : send archive by email
  -sfx[{name}] : Create SFX archive
  -si[{name}] : read data from stdin
  -slp : set Large Pages mode
  -slt : show technical information for l (List) command
  -snh : store hard links as links
  -snl : store symbolic links as links
  -sni : store NT security information
  -sns[-] : store NTFS alternate streams
  -so : write data to stdout
  -spd : disable wildcard matching for file names
  -spe : eliminate duplication of root folder for extract command
  -spf : use fully qualified file paths
  -ssc[-] : set sensitive case mode
  -sse : stop archive creating, if it can't open some input file
  -ssp : do not change Last Access Time of source files while archiving
  -ssw : compress shared files
  -stl : set archive timestamp from the most recently modified file
  -stm{HexMask} : set CPU thread affinity mask (hexadecimal number)
  -stx{Type} : exclude archive type
  -t{Type} : Set type of archive
  -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Update options
  -v{Size}[b|k|m|g] : Create volumes
  -w[{path}] : assign Work directory. Empty path means a temporary directory
  -x[r[-|0]]{@listfile|!wildcard} : eXclude filenames
  -y : assume Yes on all queries

L:\Program Files\7-Zip>


用法:7z<command>[<switches>..]<archive\u name>[<file\u names>..][@listfile]

<Commands>

a:将文件添加到存档

b:基准

d:从存档中删除文件

e:从存档中提取文件(不使用目录名)

h:计算文件的哈希值

i:显示有关支持的格式的信息

l:列出档案的内容

rn:重命名存档中的文件

测试档案的完整性

u:将文件更新到存档

x:提取具有完整路径的文件

<Switches>

--:停止开关和@listfile解析

-ai[r[-|0]{@listfile|!wildcard}:包含存档

-ax[r[-|0]{@listfile|!wildcard}:排除存档

-ao{a | s | t | u}:设置覆盖模式

-an:禁用存档名称字段

-bb[0-3]:设置输出日志级别

-bd:禁用进度指示器

-bs{o|e | p}{0 | 1 | 2}:为输出/错误/进度行设置输出流

-bt:显示执行时间统计信息

-i[r[-|0]{@listfile|!wildcard}:包括文件名

-m{Parameters}:集合压缩方法

-mmt[N]:设置CPU线程数

-mx[N]:设置压缩级别:-mx1(最快)-mx9(超高)

-o{Directory}:设置输出目录

-p{Password}:设置密码

-r[-| 0]:递归子目录

-sa{a | e | s}:设置存档名称模式

-scc{UTF-8 | WIN | DOS}:控制台输入/输出的set字符集

-scs{UTF-8 | UTF-16LE | UTF-16BE | WIN | DOS |{id}:为列表文件设置字符集

-scrc[CRC32 | CRC64 | SHA1 | SHA256 |*]:为x、e、h命令设置哈希函数

-sdel:压缩后删除文件

-seml[.]:通过电子邮件发送存档

-sfx[{name}]:创建sfx存档

-si[{name}]:从标准输入读取数据

-slp:设置大页面模式

-slt:显示l(列表)命令的技术信息

-snh:将硬链接存储为链接

-snl:将符号链接存储为链接

-sni:存储NT安全信息

-sns[-]:存储NTFS备用流

-so:将数据写入标准输出

-spd:禁用文件名的通配符匹配

-spe:为extract命令消除根文件夹的重复

-spf:使用完全限定的文件路径

-ssc[-]:设置敏感案例模式

-sse:如果无法打开某些输入文件,请停止创建存档

-ssp:存档时不更改源文件的上次访问时间

-ssw:压缩共享文件

-stl:从最近修改的文件设置存档时间戳

-stm{HexMask}:设置CPU线程关联掩码(十六进制数)

-stx{Type}:排除存档类型

-t{Type}:设置存档的类型

-u[-][p][q][r][x][y][z][!newArchiveName]:更新选项

-v{Size}[b | k | m | g]:创建卷

-w[{path}]:分配工作目录。空路径表示临时目录

-x[r[-| 0]{@listfile |!wildcard}:排除文件名

-y:假设所有查询都是


案例:

注册表的项目名称:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe

      TheReg.RootKey:=HKEY_LOCAL_MACHINE;
         //KeyName := 'SOFTWARE\7-Zip';//:取这里是不行的,不可被访问的
      KeyName := 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe';

压缩为目标文件_用哪个源文件_自动覆盖模式(路径喊空格的两种表达方式):
7z.exe a "C:\Program Files\7-Zip\"testfile.7z "C:\Program Files\7-Zip\"testfile.apk -y
7z.exe a "C:\Program Files\7-Zip\testfile.7z" "C:\Program Files\7-Zip\testfile.apk" -y
解压为目标文件不带目录_自动覆盖模式(路径喊空格的两种表达方式):
7z.exe e "C:\Program Files\7-Zip\"testfile.7z -y
7z.exe e "C:\Program Files\7-Zip\testfile.7z" -y
解压为目标文件全路径_自动覆盖模式(路径喊空格的两种表达方式):
7z.exe x "C:\Program Files\7-Zip\"testfile.7z -y
7z.exe x "C:\Program Files\7-Zip\testfile.7z" -y

-o解压输出路径参数的用法:
"C:\Program Files\7-Zip\7z.exe"  x "D:\开发包\白兰地专用-201305\MakeScreenshot\NOXSKD20200308041_Master_20211130135916751.7z" -o"D:\开发包\白兰地专用-201305\MakeScreenshot\"  -y


二、常见问题(FAQ)

可以在商业组织中使用7-Zip吗?

是的,7-Zip是免费软件。你可以在任何计算机上使用它。您不需要注册或支付7-Zip。

如何在Windows 7和Windows Vista中将文件关联设置为7-Zip?

您必须在管理员模式下运行7-Zip文件管理器。右键单击7-Zip文件管理器的图标,然后单击以管理员身份运行。然后可以更改文件关联和其他一些选项。

为什么新版本7-Zip创建的7z归档文件比旧版本7-Zip创建的归档文件大?

新版本的7-Zip(从15.06版开始)默认情况下对solid 7z归档文件使用另一个文件排序顺序。

旧版本的7-Zip(版本15.06之前)使用“按类型”(“按扩展名”)进行文件排序。

新版本的7-Zip支持两种排序顺序:

按名称排序-默认顺序。

如果在“添加到存档”窗口的参数字段中指定了“qs”,则按类型排序(或命令行版本的-mqs开关)。

若字典大小小于文件的总大小,那个么对于不同的排序方法,压缩比会有很大的差异。如果不同文件夹中有相似的文件,“按类型”排序在某些情况下可以提供更好的压缩比。

请注意,“按类型”排序有一些缺点。例如,NTFS卷使用“按名称”排序顺序,因此如果存档使用另一种排序,则HDD设备上对顺序异常的文件执行某些操作的速度可能会下降(HDD对“查找”操作的速度较低)。

可以使用以下方法提高压缩比:

增加字典大小。当不使用“qs”时,它会有所帮助。

在参数字段中指定'qs'(或在命令行版本中使用-mqs开关)。

如果您认为不寻常的文件顺序对您来说不是问题,并且如果使用小型字典获得更好的压缩比对您来说更重要,请使用“qs”模式。

为什么7-Zip不能打开一些Zip档案?

在99%的情况下,这意味着存档包含不正确的标题。其他ZIP程序可能会打开一些标题不正确的归档文件,因为这些程序只会忽略错误。

如果你有这样的档案,请不要打电话给7-Zip开发人员。相反,尝试查找用于创建归档的程序,并告知该程序的开发人员他们的软件不兼容ZIP。

还有一些ZIP归档文件是使用7-ZIP不支持的方法编码的,例如WAVPack(WinZip)。

为什么从7-Zip拖放存档提取到资源管理器会使用临时文件?

7-Zip不知道放置目标的文件夹路径。只有Windows资源管理器知道确切的删除目标。Windows资源管理器需要文件(拖动源)作为磁盘上的解压缩文件。因此,7-Zip将文件从归档文件提取到临时文件夹,然后7-Zip将这些临时文件的路径通知Windows资源管理器。然后Windows资源管理器将这些文件复制到drop目标文件夹。

为了避免临时文件的使用,您可以使用7-Zip的Extract命令或从7-Zip拖放到7-Zip。

为什么命令行版本不向存档添加没有扩展名的文件?

您可能正在使用**通配符。7-Zip不使用操作系统的通配符掩码解析器,因此将**视为任何具有扩展名的文件。要处理所有文件,必须使用*通配符,或者完全忽略通配符。

为什么-r开关不能按预期工作?

在大多数情况下,您不需要-r开关。7-Zip即使没有-r开关也可以压缩子文件夹。

例1:

7z.exe a c:\a.7z“c:\Program Files”

完全压缩“C:\Program Files”,包括所有子文件夹。

例2:

7z.exe a-r c:\a.7z“c:\Program Files”

在C:\(例如,在“C:\WINDOWS”中)的所有子文件夹中搜索并压缩“程序文件”。

如果只需要压缩具有某些扩展名的文件,可以使用-r开关:

7z a-r c:\a.zip c:\dir\*.txt

压缩文件夹c:\dir\及其所有子文件夹中的所有*.txt文件。

为什么7-Zip不能在32位Windows中使用大字典?

32位Windows仅为每个应用程序分配2 GB的虚拟空间。另外,2GB的块可能会被分割(例如,通过某个DLL文件),因此7-Zip无法分配一个大的连续虚拟空间块。64位Windows中没有此类限制。因此,如果您需要一定数量的物理RAM,您可以在Windows x64中使用任何字典。

如何在静默模式下安装7-Zip?

对于exe安装程序:使用“/S”参数进行静默安装,使用“/D=dir”参数指定“输出目录”。这些选项区分大小写。

对于msi安装程序:使用/q INSTALLDIR=“C:\Program Files\7-Zip”参数。

如何恢复损坏的7z存档?

当归档文件损坏时,可能会出现以下情况:

您可以打开归档文件并查看文件列表,但当您按Extract或Test命令时,会出现一些错误:数据错误或CRC错误。

打开归档文件时,会收到消息“无法将文件“a.7z”作为归档文件打开”

可以恢复一些数据。读abo

 类似资料: