我解决了这个问题,请参阅下面的答案。现在我的问题是,如何让它容忍目录名称中带有空格的目录。
我正在寻找一个 7zip 的命令行来实现以下目标:我有一个基本文件夹,其中包含许多子文件夹,每个子文件夹都包含许多 zip 文件。每个 zip 文件又包含许多文件。像这样:
之前:
c:\base\dir1
\dir1\x1.zip
\x1.zip\file1.txt
\z1.zip\file2.txt
\dir1\x2.zip
\x2.zip\file1.txt
\x2.zip\file1.txt
c:\base\dir2\
\dir2\z1.zip
\z1.zip\file1.txt
\z1.zip\file2.txt
\dir2\z2.zip
\z2.zip\file1.txt
\z2.zip\file2.txt
[对 dir3、dir4...dirn 重复相同的结构]
我想要达到的就是这个。
后:
c:\base\dir1
\dir1\x1
\x1\file1.txt
\x1\file1.txt
\dir1\x2
\x2\file1.txt
\x2\file1.txt
c:\base\dir2\
\dir2\z1
\z1\file1.txt
\z1\file2.txt
\dir2\z2
\z2\file1.txt
\z2\file2.txt
换句话说,每个 zip 文件都已解压缩到与 zip 文件同名的子文件夹中。这些子文件夹位于每个 zip 文件所在的同一文件夹中。
我试过这个:
对于 /F "usebackq" %f in ( dir /b/a:d
) 执行 C:\APPS\7-Zip\7z.exe x .%f*.zip -o%f
但这会将所有解压缩文件放在 zip 所在的文件夹中(x1.zip 被解压缩到 c:\base\dir1,z1.zip 被解压缩到 c:\base\dir2 等)而不是子文件夹中 没有子文件夹以创建的 zip 文件命名。看这个:
错误1:
c:\base\dir1
\dir1\file1.txt
\dir1\file2.txt
等我也试过这个:
for /F "usebackq" %f in (`dir /b/a:d`) do "C:\Program Files\7-Zip\7z.exe" x .\%f\*.zip -o*
现在确实创建了以 zip 文件名命名的子文件夹,但它们都在 c:\base 中,如下所示:
错误2:
c:\base
\base\x1\file1.txt
\base\x2\file2.txt
等等
同样,我要的是:
c:\base
\base\dir1\x1\file1.txt
\base\dir2\z1\file1.txt
很抱歉这篇关于似乎相当简单的操作的冗长文章。我真的很难让我的示例文件夹树的格式看起来正确,所以如果他们感到困惑,请道歉。如果有人知道如何做到这一点,希望使用正确的命令行,我将不胜感激。
我想到了。只是:
-o%f* 在 zip 文件所在的文件夹内创建一个以 zip 文件命名的子文件夹。
不过,另一个问题是,我怎样才能让它容忍带有空格的目录?