通过命令行创建7-Zip存档时创建逻辑文件夹结构

谜团

我一直在使用“ DotNetZip”库通过以下代码来归档文件:

var files = new []
{
    new { file = new FileInfo(@"C:\_test\Data\Testing\data.txt"), source = "Data" },
    new { file = new FileInfo(@"C:\_test\Logs\Testing\data.txt"), source = "Logs" },
};  

using (Ionic.Zip.ZipFile zipFile = new Ionic.Zip.ZipFile())
{
    zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
    foreach (var f in files)
    {
        zipFile.AddFile(f.file.FullName, f.source);
    }
    zipFile.Save(@"C:\_test\output.zip");
}

这里要注意的关键是文件名相同,它们直接包含在具有相同名称的文件夹中,并且当我创建Zip文件时,我正在创建逻辑文件夹以使文件可放入,因此没有文件名称冲突。

问题是Zip压缩很糟糕。实际上,我有一些示例,这些示例说明了我要放入一堆小文件并获得更大的Zip!

然后,我使用7-Zip进行了测试,结果非常好。文件大小比Zip小得多。

因此,我尝试使用7-Zip重写我的代码,但是似乎没有一个适用于.NET的良好的7-Zip库,唯一的选择是通过命令行使用7-Zip。

我在Powershell中尝试过此操作:

."C:\Program Files\7-Zip\7z.exe" a -mx9 "C:\_test\20210112 Testing.7z" "C:\_test\Data\Testing\data.txt" "C:\_test\Logs\Testing\data.txt"

但是我得到以下输出:

7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Scanning the drive:
2 files, 40 bytes (1 KiB)

Creating archive: C:\_test\__test.7z

ERROR:
Duplicate filename on disk:
data.txt
data.txt

如果我添加了-spf命令行,那么它可以工作,但是现在我的归档文件是从每个文件夹创建的C

从命令行添加项目时,是否有7-Zip中的方法允许它创建逻辑文件夹结构?

为了清楚起见,我正在选择要存档的文件夹中文件的子集,并将其放置在逻辑文件夹中。

梅西特

如果您只想压缩文件夹中的所有内容,则可以这样做,它将保持文件夹结构。

."C:\Program Files\7-Zip\7z.exe" a -mx9 "C:\_test\20210112 Testing.7z" "C:\_test\*"

编辑:要有选择地存档某些文件,请使用相对路径。您可以将其设置C:\_test为当前目录,然后运行

."C:\Program Files\7-Zip\7z.exe" a -mx9 "C:\_test\20210112 Testing.7z" "Data\Testing\data.txt" "Logs\Testing\data.txt"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在命令行上创建7zip存档时加密文件列表

通过命令行创建具有相同名称的文件夹的zip

通过命令行创建时未显示文件夹

7-Zip命令行从存档中提取文件夹

7Zip-命令行:通过通配符模式排除文件夹?

通过命令行将书签创建为PDF文件

在Eclipse Mars中通过命令行创建战争文件

如何通过命令行创建 jar 文件?

跟踪7zip命令行创建zip存档的进度

通过命令行下载7zip强制归档

Google大查询-通过命令行创建表架构

通过命令行或C#创建EF模型

通过linux命令行创建mysql用户?

通过linux命令行创建mysql用户?

通过命令行创建站点备份

通过命令行创建的用户,无法成功登录

7-Zip创建自解压存档的命令行参数是什么?

命令行7Zip创建不带扩展名的存档

Python使用命令行创建7zip存档

如何在命令行中创建仅显示该目录文件夹的树结构

创建或编辑文件时,如何监视文件夹并触发命令行操作?

使用`powershell`命令行创建多个文件夹时出错

7z的命令行从存档内的特定文件夹中提取特定文件

命令行7Zip通过指定的结果路径提取文件

通过命令行创建Assets.car文件以进行应用程序退出

如何通过命令行在Centos中创建dmg文件

如何通过命令行为Gnome终端创建新的配置文件?

漏洞?无法通过命令行ECHO和COPY CON使用'='创建文件

通过命令行将多个文件移动到一个文件夹/目录(Windows 7)