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

Batch file 如何使用7-zip批量解压缩文件夹中的所有文件?,batch-file,Batch File,标题似乎说明了一切。我不知道该怎么做,另一个帖子是 没有什么能很连贯地向我解释。有人能帮我解压特定文件夹中的所有.zip文件吗?这将解压当前文件夹中的所有zip文件(到同一文件夹),假设您已将7zip安装到C:\Program files\7-zip位置 如果已将7zip文件夹添加到路径中,则只需输入7z而不是完整路径 “C:\Program Files\7-Zip\7z.exe”e*.Zip 只是为了加起来。 我的默认安装文件夹是C:\ProgramFiles(x86)\7-Zip,因此我将

标题似乎说明了一切。我不知道该怎么做,另一个帖子是


没有什么能很连贯地向我解释。有人能帮我解压特定文件夹中的所有.zip文件吗?

这将解压当前文件夹中的所有zip文件(到同一文件夹),假设您已将7zip安装到
C:\Program files\7-zip
位置

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

“C:\Program Files\7-Zip\7z.exe”e*.Zip
只是为了加起来。 我的默认安装文件夹是
C:\ProgramFiles(x86)\7-Zip
,因此我将从那里开始。 这里是下载链接

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

以下是“正常”解压的步骤,为每个解压的zip文件创建一个文件夹:

“C:\ProgramFiles(x86)\7-Zip\7z.exe”x*.Zip
要了解7z.exe的全部操作细节,请使用
--help

“C:\ProgramFiles(x86)\7-Zip\7z.exe”--帮助
以下是它的输出:

用法:7z[…][…] [] a:将文件添加到存档 b:基准 d:从存档中删除文件 e:从存档中提取文件(不使用目录名) l:列出档案的内容 测试档案的完整性 u:将文件更新到存档 x:提取具有完整路径的文件 -ai[r[-|0]{@listfile|!wildcard}:包含存档 -ax[r[-|0]{@listfile|!wildcard}:排除存档 -bd:禁用百分比指示器 -i[r[-|0]{@listfile|!wildcard}:包括文件名 -m{Parameters}:集合压缩方法 -o{Directory}:设置输出目录 -p{Password}:设置密码 -r[-| 0]:递归子目录 -scs{UTF-8 | WIN | DOS}:为列表文件设置字符集 -sfx[{name}]:创建sfx存档 -si[{name}]:从标准输入读取数据 -slt:显示l(列表)命令的技术信息 -so:将数据写入标准输出 -ssc[-]:设置敏感案例模式 -ssw:压缩共享文件 -t{Type}:设置存档的类型 -u[-][p][q][r][x][y][z][!newArchiveName]:更新选项 -v{Size}[b | k | m | g]:创建卷 -w[{path}]:分配工作目录。空路径表示临时目录 -x[r[-|0]]{@listfile |!wildcard}:排除文件名 -y:假设所有查询都是 对于非批量用户

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

您可以使用x而不是e,这将允许您使用zip文件名提取文件夹中的每个zip文件

"C:\Program Files\7-Zip\7z.exe" x *.zip
例如,您有一个zip文件列表

file001.zip
file002.zip
fileXXX.zip

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

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

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

for /f "usebackq delims=" %f in ( `dir /b /s *.zip` ) do 7z x "%f" -o"%~pf%~nf"
如果
PATH
环境变量中没有7-Zip的程序文件夹,则需要编写其完整路径。在具有x64 7-Zip的x86 Windows或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用变量
%f
的路径(实际上是目录名,包括末尾的反斜杠)替换
%pf
,用文件名(不带文件扩展名)替换
%nf
.

无需使用外部工具即可完成此操作-我将如何执行此操作,以便选择要将其解压缩到的文件夹?您只需添加-o开关即可。按照我们前面的示例,您可以使用“C:\Program Files\7-Zip\7z.exe”e*.Zip-oc:\temp\destinationMagical,对于我来说,每个Zip都位于另一个文件夹中,因此它是“C:\Program Files\7-Zip\7z.exe”e/。rarOP正在批处理文件中寻找解决方案。