4

Я пытаюсь это:

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

Но если я уже создал файл C:\Disc.7z то 7zip ничего не сжимает и отправляет мне такой вывод:

System error:
File already exist.

Я пробовал с ключом -y , но 7zip ничего не делает ...

Как я могу перезаписать файл?


ОБНОВИТЬ

Я пробовал переключатель -aoa но он тоже не работает ...

5 ответов5

7

Ваша проблема в том, что вы используете -v для создания многотомного архива. В течение последних 5 лет люди просили автора разрешить программе изменять многотомные архивы, но он не планирует внедрять эту функцию в ближайшее время. (Это с открытым исходным кодом, хотелось бы, чтобы какой-нибудь предприимчивый программист уже сделал это!)

3

В настоящее время нет возможности использовать эту функцию с помощью переключателей командной строки. Перезапись поддерживается только при извлечении архива.

3

Попробуйте использовать 7za.exe u вместо 7za.exe a . Первый специально используется для обновления архива, который уже существует.

1

Работа-Around

Чтобы обойти эту проблему, вы можете удалить архивные файлы, если они существуют, прежде чем создавать их снова. Вот один из способов сделать это:

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

Я заметил, что эта проблема не возникает для меня, если я уберу ключ -v . Похоже, что 7-Zip не поддерживает обновление томов архива.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .