我想对整个文件夹批量执行“提取此处...”命令。每种类型的存档都应以存档文件的名称解压到当前文件夹中。我找到了一些仅适用于 *.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")