从目录创建档案,但未将目录名称添加到档案中

从目录创建档案,但未将目录名称添加到档案中

我有以下文件夹结构:

    • 文件夹1
    • 文件夹2
    • 文件夹3
    • 7za程序

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

运行以下命令

7za.exe a -tzip folder1.zip folder1\\*.*

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

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

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

答案1

来自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 附加组件)时才需要它。

答案2

这对我有用

考虑类似 C:\Parent\SubFolders..... 的文件夹结构,并且您想要创建 parent.zip,它将包含 C:\Parent 中的所有文件和文件夹(不含父文件夹)[即它将从 SubFolders 开始.....]

cd /D "C:\Parent"

"7z.exe" a Parent.zip "*.*" -r

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

答案3

只是为了扩展已接受的答案(我无法在那里添加评论):

在 Linux 上添加‘*’对我来说不起作用,所以我最终编写了更详细的命令行来给出所需的结果:

curr_dir=$(pwd); \ 
cd source_code/lambda/ ; \
7z a ../../lambda.zip .; \
cd $curr_dir \
unset curr_dir

===========

脚本解释:

  • 保存当前目录路径以供稍后使用;
  • 导航到需要存档的目录;
  • 创建档案(注意最后的‘.’(点));
  • 回到原来的目录;
  • 删除存储原始目录路径的变量

我希望它对某些人有用。

答案4

这样怎么样。例如 Folder/subFolder1、Folder/subfolder2

选择所有子文件夹>右键单击然后创建存档>选择任意格式

*档案名称将是父文件夹..

很简单吧?

相关内容