我有以下文件夹结构:
- 根
- 文件夹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
选择所有子文件夹>右键单击然后创建存档>选择任意格式
*档案名称将是父文件夹..
很简单吧?