Answers:
从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附加组件)。
这对我有用
考虑文件夹结构,例如C:\ Parent \ SubFolders.....。您想创建parent.zip,其中将包含所有文件和文件夹C:\ Parent,而没有父文件夹[即,它将从SubFolders .....开始]
cd /D "C:\Parent"
"7z.exe" a Parent.zip "*.*" -r
这将在C:\ Parent中创建Parent.zip
*.*
意味着“所有文件”,而是“所有以句点作为文件名一部分的文件”。因此,此答案实际上将忽略没有扩展名的文件(已在接受的答案中注明)。
只是为了扩展已接受的答案(我无法在此处添加评论):
在Linux上,添加'*'对我不起作用,因此我最终编写了更详细的命令行,从而获得了预期的结果:
curr_dir=$(pwd); \
cd source_code/lambda/ ; \
7z a ../../lambda.zip .; \
cd $curr_dir \
unset curr_dir
===========
脚本说明:
我希望它可能对某人有用。
*
用引号引起来(否则外壳会将它扩展到此处的文件)。
cd
进入folder1和7za.exe a -tzip ..\folder1.zip *.*
吗?