批量执行“在此处提取”命令

批量执行“在此处提取”命令

我想对整个文件夹批量执行“提取此处...”命令。每种类型的存档都应以存档文件的名称解压到当前文件夹中。我找到了一些仅适用于 *.zip 的批处理脚本,但我不在乎它是什么类型的存档,只要我的存档器可以打开它即可。

有人知道哪种归档程序具有这样的批处理功能吗?我似乎在 7-zip 或 winrar 中找不到它。

伪:

Given folder x
foreach archiveFile in x or descendant of x
unzip archiveFile.extension >> "folder of archiveFile/archiveFile"

更新
我已针对 zip 文件尝试了以下操作:

dir /s /b *.zip > allzips.txt
for /F %%x in (allzips.txt) do unzip %%x

哪里unzip还是一个未知函数。

答案1

编辑给定:使用批处理脚本。

您可能希望使用第三方 zip 工具(强烈推荐 7-ZIP 命令行版本 7z.exe)来完成此操作。

使用 7z 时语法如下:

7z <command> [<switch>...] <base_archive_name> [<arguments>...]

提取命令如下:

7z e file.zip -y

-y 开关假设对提取过程中可能出现的任何问题(例如覆盖请求)都回答“是”。

所以你的命令将会读

CD "C:\Location\Of\ZipFiles"
FOR /F "USEBACKQ tokens=*" %%F IN (`DIR /b *.zip`) DO (7z e "%%F" -y)

如果要将它们输出到不同的位置,可以使用 -o 开关并指定目录:

7z e "%%F" -y -oC:\Some\Other\Folder\

编辑:

要使用完整路径执行提取并仅指定所有 ZIP 存档,请使用以下命令:

7z x -tzip "C:\Location\of\zips\*"

甚至更疯狂... C: 驱动器上的所有 ZIP 文件:

7z x -r -tzip "C:\*"

编辑2:

使其与您的输出文件兼容,这样做:

dir /s /b *.zip > allzips.txt
for /F %%x in (allzips.txt) do (7z x -tzip "%%x")

相关内容