归档单个文件夹的语法

归档单个文件夹的语法

有人可以调整/编辑这个批处理命令,以便它在存档之前转到每个文件夹的根目录。

对于 (*) 中的 /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..
)

相关内容