我的软件应该使用 7zip 将文件收集到 .zip 或 .7z 存档中,但由于软件的性质,有很多文件具有相同的名称,但目录不同,例如:
D:\Software\Components\Station1\Alarms\Logs\ValvePressureSensor.xml
D:\Software\Components\Station1\Configurations\ValvePressureSensor.xml
D:\Software\Components\Station2\Alarms\Logs\ValvePressureSensor.xml
这些文件存储在列表“FileList.lst”中,我以这种方式调用 7-zip:
7za a -t7z "D:\Software\CollectedData\Diagnostics.7z"
"@D:\Software\ZipTemp\FileList.lst"
所以我想知道是否有办法在压缩每个文件时保留它们的目录以阻止 7-zip 标记重复文件?
我知道涉及从每个文件路径的开头删除“D:\”的解决方法,但这将是手动不可能的,因为“FileList.lst”在 C# 代码中填充了大约 1500~3000 个文件(其中并不总是相同的文件),并且 FileList.lst 位于一个临时文件夹中,该文件夹被创建、压缩,然后动态销毁。所以我无法将 7za.EXE 存储在同一区域。最重要的是,文件列表被另一个需要文件路径中指定的驱动器的可执行文件使用。
我应该提到我正在使用 Visual Studio 2005、C#2.0 和 7-zip v9.20。
编辑:我的问题之前相当广泛,我应该澄清我正在从 WinZip 切换(由于许可问题)所以我记得在 WinZip 中如果添加 -p 开关,WinZip 将存储添加的所有文件的文件夹信息,而不仅仅是对于来自子文件夹的文件;文件夹信息将从命令行中指定的文件夹开始。你知道7zip中有类似的东西吗?
编辑 2:原来你不能用 7-zip 保存文件夹信息