0

私のソフトウェアは、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 でファイル フォルダー情報を保持できないことがわかりました

4

1 に答える 1

3

各ファイル パスの先頭から「D:\」を削除する回避策があることは承知していますが、これは手動では不可能です。

したがって、動的に削除します。パスが一貫している場合は、単純なものでpath.Substring(3)十分です。

于 2012-07-09T17:20:42.713 に答える