命令格式
7z <command> [<switch>…] <base_archive_name> [<arguments>…]
7z +操作的名称+ +操作的参数+ +打包文件名+ +要打包的文件+ +其他参数+
压缩
a (Add) command
添加文件到压缩包中
7z a out1.zip in_dir\ //指定的是目录名
把in_dir \之下的所有的文件和子目录都添加到archive1.zip中。压缩包中的所有文件名都会包含in_dir \前缀。解压时得到的是in_dir目录。压缩的是目录,解压得到的也是目录。
7z a out1.zip in_dir \* 和 7z a out1.zip in_dir \ 是一样的。
7z a out3.zip .\ in_dir \* //指定的是文件名
把in_dir \之下的所有的文件和子目录都添加到out3.zip中。压缩包中的所有文件名都不包含in_dir \前缀。X命令解压时直接得到各个文件和子目录。
7z a out.zip -r
当前目录下的所有文件和子目录打包到out.zip。
压缩后删除原文件
-sdel (Delete files after compression) switch
使用这个选项的作用就像是剪切。
7z a a.7z *.txt -sdel
moves txt files from disk’s directory to a.7z archive.
使用一个文件列表指定文件名
List file
You can supply one or more filenames or wildcards for special list files (files containing lists of files). The filenames in such list file must be separated by new line symbol(s).
For list files, 7-Zip uses UTF-8 encoding by default. You can change encoding using -scs switch. Multiple list files are supported.
For example, if the file “listfile.txt” contains the following:
My programs\*.cpp
Src\*.cpp
then the command
7z a -tzip archive.zip @listfile.txt
adds to the archive “archive.zip” all “*.cpp” files from directories “My programs” and “Src”.
指定打包文件格式
7z a -tzip archive.zip *.txt
adds all *.txt files from current directory to zip archive archive.zip.
7z t -t7z.split archive.7z.001
tests all files in archive.7z.001. It also checks that archive is multivolume .7z archive.
7z x -t# sfxarchive.exe
extracts sfxarchive.exe in parser mode.
7z x -tiso archive.iso
extracts files from archive.iso open as ISO archive.
7z x -tudf archive.iso
extracts files from archive.iso open as UDF archive.
如果没有使用-t{archive_type}指定类型,那么7zip会使用扩展名来决定打包类型。创建新的压缩包,如果没有指定类型,也没有扩展名,会默认创建.7z类型的压缩包。
输出压缩包中所有的文件名
l (List contents of archive) command
Lists contents of archive,包括文件名,以及文件大小、类型等信息。
命令:7za.exe l out3.zip
输出:
out3.zip里包含的是5个文件,而不是两个文件和1一个子目录,一个文件中不会包含目录。只不过使用x命令解压的时候可以创建dir1子目录。
所以 dir1\11.txt 中的dir1 是“文件名前缀”,而不是目录名。
从压缩包中删除文件
d (Delete) command
Deletes files from archive.
Example
7z d archive.zip *.bak -r
deletes *.bak files from archive archive.zip.
解压
解压有两个命令,e 和 x。e命令解压的时候不会保持目录结构,会把所有的文件都解压到目的目录下,不管这些文件是不是位于子文件夹。
x命令则会保存目录结构。以上面的out3.zip为例,
命令:7za.exe x –oout_dir out3.zip
out_dir中的文件结构:
命令:7za.exe e –oout_dir out3.zip
out_dir中的文件结构:
子目录dir是空目录。
设置密码
-p{password} 指定压缩或者解压时的密码。
7z a archive.7z -psecret -mhe *.txt
compresses *.txt files to archive.7z using password “secret”. Also it encrypts archive headers (-mhe switch), so filenames will be encrypted.
注意有的参数是和格式关联的,例如zip格式无法设置隐藏文件名,对zip格式使用 –mhe 参数就无法成功执行。不同格式适用的不同命令参数见文档。
7z x archive.zip -psecret
extracts all files from archive.zip using password “secret”.
计算哈希
7zip另一项非常有用的功能是计算文件的哈希。使用h (Hash) 命令计算文件的哈希。
语法格式:h [-scrc{Method}] [files]
-scrc参数指定计算的方法,支持的方法有 CRC32, CRC64, SHA1, SHA256. 默认是 CRC32.
Examples
7z h a.txt
calculates CRC32 for a.txt.
7z h -scrcsha256 a.iso
calculates SHA256 for a.iso.
7z h *
calculates CRC32 for all files in current folder and all subfolders.
Notes
7-Zip shows hash values for each file, the sum of hash values and the sum that includes all hash values of data and all hash values for filenames.
7-Zip represents hash values for CRC32 and CRC64 as integer numbers in hex.
7-Zip represents hash values For SHA1 and SHA256 as sequence of bytes in hex.