如何批量使用7-zip解压缩文件夹中的所有文件?

时间:2015-07-16 17:19:41

标签: batch-file

标题类型说明了一切。我不知道该怎么做,另一篇文章在 Unzip all files in a folder using 7zip in CMD line

对我的解释非常一致。有人可以用一种简单的方法帮助我解压缩特定文件夹中的所有.zip文件吗?

5 个答案:

答案 0 :(得分:33)

这会将当前文件夹中的所有zip文件解压缩到同一个文件夹中,假设您已将7zip安装到C:\Program Files\7-Zip位置。

如果您已将7zip文件夹添加到路径中,则只需输入7z而不是完整路径

"C:\Program Files\7-Zip\7z.exe" e *.zip

答案 1 :(得分:3)

只需添加Gabor's answer即可。 我的默认安装文件夹是C:\Program Files (x86)\7-Zip,所以我将从那里开始。 这是下载7zip的链接。

我想将目录中的每个zip文件解压缩到多个文件夹中。但是,上一个答案中的e会导出目录中的所有内容。

这是"正常"解压缩为每个zip文件创建一个文件夹解压缩:

 "C:\Program Files (x86)\7-Zip\7z.exe" x *.zip

要详细了解使用7z.exe可以执行的操作,请使用--help

 "C:\Program Files (x86)\7-Zip\7z.exe" --help

这是它的输出:

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

<Commands>
  a: Add files to archive
  b: Benchmark
  d: Delete files from archive
  e: Extract files from archive (without using directory names)
  l: List contents of archive
  t: Test integrity of archive
  u: Update files to archive
  x: eXtract files with full paths

<Switches>
  -ai[r[-|0]]{@listfile|!wildcard}: Include archives
  -ax[r[-|0]]{@listfile|!wildcard}: eXclude archives
  -bd: Disable percentage indicator
  -i[r[-|0]]{@listfile|!wildcard}: Include filenames
  -m{Parameters}: set compression Method
  -o{Directory}: set Output directory
  -p{Password}: set Password
  -r[-|0]: Recurse subdirectories
  -scs{UTF-8 | WIN | DOS}: set charset for list files
  -sfx[{name}]: Create SFX archive
  -si[{name}]: read data from stdin
  -slt: show technical information for l (List) command
  -so: write data to stdout
  -ssc[-]: set sensitive case mode
  -ssw: compress shared files
  -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

答案 2 :(得分:1)

您可以使用x代替e,这样可以提取具有zip文件名的文件夹中的每个zip文件。

"C:\Program Files\7-Zip\7z.exe" x *.zip

例如,您具有zip文件列表

file001.zip
file002.zip
fileXXX.zip

将解压缩到zip文件所在的文件夹中的/ file001,/ file002,/ fileXXX中。

答案 3 :(得分:0)

我不确定 OP 的意图,但我认为每个 .zip 文件都有一个子文件夹是个好主意,这样同名的文件就不会被覆盖。 (就像用鼠标右键拖放多个 .zip 文件并从本地菜单中选择 7-Zip > Extract Files ... 一样。)

为此,我在命令行中使用它:

for /f "usebackq delims=" %f in ( `dir /b /s *.zip` ) do 7z x "%f" -o"%~pf%~nf"

如果您的 PATH 环境变量中没有 7-Zip 的程序文件夹,则需要写入其完整路径。在 x86 Windows 或带有 x64 7-Zip 的 x64 Windows 上:

for /f "usebackq delims=" %f in ( `dir /b /s *.zip` ) do "C:\Program Files\7-Zip\7z.exe" x "%f" -o"%~pf%~nf"

在带有 x86 7-Zip 的 x64 Windows 上:

for /f "usebackq delims=" %f in ( `dir /b /s *.zip` ) do "C:\Program Files (x86)\7-Zip\7z.exe" x "%f" -o"%~pf%~nf"

注意:cmd将%~pf替换为变量%f的路径(实际上是目录名,末尾有反斜杠),%~nf替换为文件名(不带文件扩展名) .

答案 4 :(得分:-2)

这里有很多过时的信息。 我使用7-zip v16.4。 这是您需要做的:

  • 打开7-zip
  • 使用7-zip导航到.7z或.zip或.rar文件所在的文件夹。
  • 选择所有.7z或.zip或.rar文件
  • Klik in 7-zip上的提取按钮
  • 在下一个弹出窗口中单击“确定”以提取到相同位置。