web-dev-qa-db-ja.com

7zipの既存のファイルを上書きするにはどうすればよいですか?

私はこれを試しています:

7za.exe a "C:\Disc.7z" "C:\test" -v20000000b -m0=BCJ -bd

しかし、私がすでにファイルを作成している場合はC:\Disc.7zその後、7Zipは何も圧縮せず、次の出力を送信します。

System error:
File already exist.

私はスイッチで試しました-y、しかし7Zipは何もしません...

ファイルを上書きするにはどうすればよいですか?


[〜#〜] update [〜#〜]

私はスイッチを試しました-aoaしかし、それも機能しません...

5
ElektroStudios

問題は、-vを使用してマルチボリュームアーカイブを作成していることです。人々は過去5年間、プログラムがマルチボリュームアーカイブを変更することを許可するように作者に要求してきましたが、彼は 計画なし この機能をすぐに実装する必要があります。 (これはオープンソースです。進取の気性のあるプログラマーがすでにやってくれることを願っています!)

7
Karan

7za.exe uの代わりに7za.exe aを使用してみてください。 1つ目は、既存のアーカイブを更新するために特に使用されます。

4
user1301428

現在、コマンドラインスイッチでこの機能を使用する方法はありません。上書きは、アーカイブの抽出中にのみサポートされます。

3
Petr Abdulin

回避策

この問題を回避するには、アーカイブファイルが存在する場合は、再度作成する前に削除します。これを行う1つの方法は次のとおりです。

CMD /C FOR %i IN (C:\Disc.7z.???) DO DEL %i && 7za.exe a "C:\Disc.7z" "C:\test" -v20000000b -m0=BCJ -bd

説明

  • CMD /Cは、7zaコマンドがファイルごとではなく1回だけ実行されるようにします。
  • FORは、各宛先アーカイブファイルを反復処理して削除します。この式は、3桁のサフィックスを持つボリュームのみを対象としていることに注意してください。もっと期待する場合は(可能かどうかはわかりませんが)、???*に置き換えることができます。
  • &&は、最初のコマンドの後に2番目のコマンドを実行します(最初のコマンドが成功した場合)。
1
Sam

-vスイッチを外しても、この問題は発生しないことに気づきました。 7-Zipはアーカイブボリュームの更新をサポートしていないようです。

1
Sam