我有一个巨大的文件夹树。假设有文件夹 A、B、C 等到 Z。每个文件夹内都有许多 zip 文件。
我可以选择文件夹中的所有 zip 文件,右键单击,选择 7zip,然后选择“解压到”*“,一切正常。例如,如果我对文件夹 A 中的 zip 文件执行此操作,则 A 将为每个 zip 文件包含一个文件夹,其中包含 zip 文件的内容。
我想要做的是搜索所有文件夹(AZ)中的所有 zip 文件并一次性执行此操作,这样每个文件夹(AZ)最终都会包含包含所有 zip 文件的文件夹。
实际情况是,7zip 将所有内容提取到它遇到的第一个文件夹(例如,A)。
有人知道怎么做这个吗?
答案1
您可以使用 Windows 命令行。只需点击 Windows 徽标,键入cmd
并按。然后通过键入和ENTER移动到包含 zip 文件的子目录的目录,如果它在另一个驱动器上,请键入 eg并再次切换到该驱动器。现在,正确的路径应显示在光标前。然后输入cd c:\my\example\dir
ENTERi:
ENTER
for /F "usebackq" %f in (`dir /b/a:d`) do @echo %f
和ENTER.dir /b/a:d
返回每个目录的一行。对于这些行中的每一行,后面的命令do
都会执行。@echo %f
只会在屏幕上显示找到的名称,因此您可以安全地控制如果删除 会执行什么@echo
。对于您的情况,您需要类似
for /F "usebackq" %f in (`dir /b/a:d`) do C:\APPS\7-Zip\7z.exe x .\%f\*.zip -o%f
它将针对每个子目录调用 7zip 命令行可执行文件(您需要调整C:\APPS\7-Zip\
系统的路径)并将所有 zip 文件(包括其完整路径)提取到当前子目录中。有关 7zip 语法的更多信息,请访问https://www.dotnetperls.com/7-zip-examples
如果你一遍又一遍地这样做,你可以创建一个简单的。蝙蝠/.cmd 文件与上面提到的命令,但您很可能需要用 %% 替换 % 才能使其工作。
答案2
我让它按照我想要的方式工作。正确的命令是:
for /F "tokens=*" %%g in ('dir /b/a:d') do "C:\Program Files\7-Zip\7z.exe" x ".\%%g\*.zip" -o"%g\*" -aos
答案3
如果您使用的是 Windows,请导航到包含文件夹 A、B、C 和 D 的根文件夹,然后搜索,*.zip
或者*.rar
在 Windows 搜索中选择/突出显示所有 zip 文件,然后使用 7-zip 执行任何您想做的事情。应该也可以与 dolphin(linux) 配合使用。