題 如何在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 但它也不起作用......


4
2018-01-18 07:00


起源


嘗試從提升(以管理員身份運行)cmd執行此操作 - Ofiris
@Ofiris,這不能解決問題。 - Sam
7-Zip是否可以更新現有檔案而不是覆蓋它們? - Sam


答案:


你的問題是你正在使用 -v 創建多卷存檔。人們過去5年一直要求作者允許該程序修改多卷檔案,但他有 無計劃;隨意 隨時實施該功能。 (它是開源的,希望一些有進取心的程序員已經做到了!)


7
2018-01-19 23:55





嘗試使用 7za.exe u 代替 7za.exe a。第一個專門用於更新已存在的存檔。


3
2018-01-18 07:44



謝謝你的評論,我試過但結果是一樣的:“文件已經存在” - ElektroStudios
7-Zip通常會更新存檔(如果已存在)。它在這種情況下不起作用的原因是 -v 正在使用開關。 - Sam
@Sam這也是我記得的,但後來我認為可能使用特定的更新選項可能會有所幫助 - user1301428
@sam,我在使用-volume開關之前嘗試過它而沒有它(並且沒有任何其他開關),結果是相同的(用7zip 7.20和7.22 beta測試),對不起我的英語。 - ElektroStudios
@ElektroHacker,這很有意思。當我測試它時,如果我刪除了 -v 切換,一切正常;如果存檔不存在,則7-Zip會創建存檔,如果存檔已存在,則會更新存檔。不要擔心你的英語;很明顯。 - Sam


目前,無法通過命令行開關實現此功能。僅在歸檔提取期間支持覆蓋。


3
2018-01-18 11:05





變通

若要解決此問題,您可以刪除存檔文件(如果它們存在,然後再次創建它們)。這是一種方法:

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 命令只執行一次而不是每個文件。
  • FOR 遍歷每個目標歸檔文件並刪除它。請注意,表達式僅涵蓋具有三位數後綴的捲。如果你期望更多(我不確定是否可能),你可以更換 ??? 同 *
  • && 在第一個命令之後運行第二個命令(如果第一個命令成功)。

1
2018-01-18 10:51



謝謝,我知道首先刪除文件是一個解決方案...但我正在尋找使用7zip參數的解決方案。 - ElektroStudios
看起來這是7-Zip中的一個錯誤,所以我懷疑在更改源代碼或等待修復錯誤之外,解決方法是唯一的選擇。 - Sam


我注意到,如果我刪除了這個問題,我就不會發生這個問題 -v 開關。看來7-Zip不支持更新存檔卷。


1
2018-01-18 23:12