我的软件应该使用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
保存文件夹信息答案 0 :(得分:3)
我知道从每个文件路径的开头删除“D:\”的解决方法,但这不可能手动
因此请动态删除它。如果您的路径一致,那么简单的path.Substring(3)
就足够了。