有人可以调整/编辑这个批处理命令,以便它在存档之前转到每个文件夹的根目录。
对于 (*) 中的 /d %%X,执行“c:\Program Files\7-Zip\7z.exe”和“%%X.zip” “%%X\”
基本上,我有许多文件夹想要单独存档。但是上面的批处理命令将单个文件夹存档在根/主目录上。因此,提取它们会导致文件夹加倍。
我需要它是这样的。主目录包含许多文件夹,然后转到单个文件夹然后存档它们。希望有人能帮忙。
答案1
嗯,您对期望结果的描述并不十分清楚。下面是目录树的假设布局。
C:\TopDir
├───Dir1
│ └───[Dir1 files]
│
├───Dir2
│ ├───SubDir2.1
│ │ └───[files]
│ │
│ ├───SubDir2.2
│ │ └───[files]
│ │
│ ├───SubDir2.3
│ │ └───[files]
│ │
│ └───[Dir2 files]
│
├───More Dirs...
│
└───[TopDir files]
下面是运行相关命令后得到的结果(请注意,您没有删除任何已存档的文件,因此它们仍然保留)。根文件夹中有一堆来自存档过程的 .zip 文件(我知道您不想要这些文件)。
C:\TopDir
├───Dir1
│ └───[Dir1 files]
│
├───Dir2
│ ├───SubDir2.1
│ │ └───[files]
│ │
│ ├───SubDir2.2
│ │ └───[files]
│ │
│ ├───SubDir2.3
│ │ └───[files]
│ │
│ └───[Dir2 files]
│
├───More Dirs...
│
├───Dir1.zip
├───Dir2.zip
├───Dirx.zip...
└───[TopDir files]
如果您从同一文件夹(根文件夹)提取这些 Zip 文件,它们将提取到现有目录结构中,并在遇到文件覆盖情况时提示您。它不会创建“双文件夹”。我假设双文件夹是指这种类型的结构:
C:\TopDir
├───Dir1
│ ├───[Dir1 files]
│ └───Dir1
│ └───[Dir1 files]
现在,如果您将 zip 文件移动到各自的文件夹中并将其解压缩,那么您将得到双文件夹。
下面是我认为可以完成您想要的操作的命令 - 将每个文件夹内容的 zip 文件放入该文件夹中:
for /d %%x in (*) do cd %%x && 7z a -tzip -r %%x.zip && cd..
该-tzip
选项确保文件是 .zip 文件,.7z 是 7zip 的默认 zip 格式。由于这是批处理文件,因此您也可以通过以下方式构建它:
for /d %%x in (*) do (
cd %%x
7z a -tzip -r %%x.zip
cd..
)