从目录创建档案,而不将目录名称添加到档案中

gg.*_*gg. 106 compression command-line 7-zip

我有以下文件夹结构:

    • 文件夹 1
    • 文件夹 2
    • 文件夹 3
    • 7za.exe

我想运行 7-zip 命令行工具将所有文件压缩folder1到一个名为 .zip 的 zip 文件中folder1.zip

运行以下

7za.exe a -tzip folder1.zip folder1\\*.*
Run Code Online (Sandbox Code Playgroud)

按预期生成一个 zip 文件。但是,当我打开 zip 文件时,其中有一个名为 的文件夹,其中包含该文件夹中的folder1所有文件。我不想将文件夹名称添加到 zip 文件夹中,即我想以“平面”文件格式添加所有文件。

我也不想为每个单独的文件/文件夹递归运行命令行工具。

是否有提供此功能的开关?

afr*_*ier 164

来自7-Zip 帮助文件:

一个(添加)命令

将文件添加到存档。

例子

7z a archive1.zip subdir\

将文件夹 subdir 中的所有文件和子文件夹添加到存档 archive1.zip。存档中的文件名将包含 subdir\ 前缀。

7z a archive2.zip .\subdir\*

将文件夹 subdir 中的所有文件和子文件夹添加到存档 archive2.zip。存档中的文件名将不包含 subdir\ 前缀。

cd /D c:\dir1\

7z a c:\archive3.zip dir2\dir3\

存档 c:\archive3.zip 中的文件名将包含 dir2\dir3\ 前缀,但它们不会包含 c:\dir1\ 前缀。

所以你想要的命令是: 7za.exe a folder1.zip .\folder1\*

另外,请注意 7-Zip 对通配符的处理。它不会被*.*视为“所有文件”——它的意思是“文件名中带有句点的所有文件”。无扩展名的文件将被遗漏。如果您真的想要所有文件,请*改用。

最后,-tzip如果存档文件名以.zip. 7-Zip 足够聪明,可以在这些情况下找出您想要的格式。仅当您需要自定义扩展(例如7za.exe a -tzip foo.xpi <files>Mozilla 附加组件)时才需要它。


Pri*_*ule 5

这对我有用

考虑像 C:\Parent\SubFolders 这样的文件夹结构......并且您想要创建parent.zip,它将包含所有文件和文件夹 C:\Parent 而没有父文件夹[即它将从 SubFolders 开始......]

cd /D "C:\Parent"

"7z.exe" a Parent.zip "*.*" -r
Run Code Online (Sandbox Code Playgroud)

这将在 C:\Parent 中创建 Parent.zip

  • 这重复了另一个答案并且没有添加新内容。除非您确实有新的贡献,否则请不要发布答案。 (3认同)
  • 请注意,7-Zip 并不认为“*.*”表示“所有文件”,而是表示“文件名中包含句点的所有文件”。因此,这个答案实际上会忽略没有扩展名的文件(这在接受的答案中已注明)。 (2认同)