批处理“在此处提取”命令

Mar*_*nix 2 batch command-line extract 7-zip

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

有谁知道什么样的归档器具有这样的批处理功能?我似乎无法在 7-zip 或 winrar 中找到它。

在伪:

Given folder x
foreach archiveFile in x or descendant of x
unzip archiveFile.extension >> "folder of archiveFile/archiveFile"
Run Code Online (Sandbox Code Playgroud)

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

dir /s /b *.zip > allzips.txt
for /F %%x in (allzips.txt) do unzip %%x
Run Code Online (Sandbox Code Playgroud)

哪里unzip还是未知函数。

Ant*_*ler 5

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

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

使用7z,语法如下:

7z <command> [<switch>...] <base_archive_name> [<arguments>...]
Run Code Online (Sandbox Code Playgroud)

提取命令将是:

7z e file.zip -y
Run Code Online (Sandbox Code Playgroud)

-y 开关假定对提取期间可能出现的任何问题(例如覆盖请求)回答“是”。

所以你的命令会读

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

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

7z e "%%F" -y -oC:\Some\Other\Folder\
Run Code Online (Sandbox Code Playgroud)

编辑:

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

7z x -tzip "C:\Location\of\zips\*"
Run Code Online (Sandbox Code Playgroud)

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

7z x -r -tzip "C:\*"
Run Code Online (Sandbox Code Playgroud)

编辑2:

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

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