Я пытаюсь создать 7-Zip архив, который сжимал бы определенную папку (только указанную!), Исключая определенное расширение файла. Я придумал это:
"PATH-TO-7Z.EXE" a archive.7z "C:\tools\" -t7z -mx=9 -mhe=on -mtc=on -sccUTF-8 -scsUTF-8 -ssc- -ssw -y -slp -r -x!*.avi
Однако он выполняет сканирование всего диска c, ища инструменты ( C:\tools\
в качестве цели в приведенном выше примере) в качестве ключевого слова и добавляет все, что находит, в мой архив.
Есть ли способ избежать этого? Значение ТОЛЬКО для архивирования C:\tools\
, исключая указанные расширения.
Я думаю, что это что-то о -r
варианте, но я не уверен, что.
Ответы:
7-Zip поиск на основе текущего каталога. Этот бит информации явно не задокументирован, но он подразумевается в справке по команде Add:
Вам нужно изменить текущий каталог перед запуском 7-zip, чтобы ваша команда выглядела так:
pushd "C:\Tools" & C:\Path\To\7z.exe a -r -x!*.avi archive.7z * & popd
Вы также можете разбить эту строку на 3 строки, если хотите.
Также отметим, что у вас есть много ненужных опций в командной строке:
-ssc-
: По умолчанию в системе Windows-t7z
: Требуется, только если тип архива не может быть определен по расширению (например,-tzip
должен быть указан, если вы хотите создать.xpi
файл)-mhe=on
: Вам нужно будет перепроверить, но я не думаю, что шифрование заголовков что-то делает с незашифрованным архивом.-scsUTF-8
: Настройки по умолчанию-sccUTF-8
: Требуется только в том случае, если вы хотите прочитать вывод консоли (или перенаправить в файл) и вам действительно нужен UTF-8 для этой конкретной цели-y
: Вообще не работает с командой Add (-e
или-x
только).-ssw
Если вы считаете, что вам это нужно, вам следует рассмотреть возможность работы со снимком VSS, чтобы убедиться, что вы получаете непротиворечивую копию читаемого файла. Если это используется с конкретным приложением, поведение которого вы протестировали, то вы можете игнорировать этот пункт-slp
Убедитесь, что вы прочитали справку и поняли требования и эффекты этого параметра, а также протестировали его, чтобы убедиться, что он не оказывает негативного влияния на вашу среду.источник
C:\Where\Backups\Go\Archive.7z
), а не простоArchive.7z
. Чтобы поместить архив в то же место, что и скрипт,%~dp0\Archive.7z
должен работать.Да, опция -r не обязательно делает то, что вы ожидаете. Это теперь упоминается в FAQ: Почему ключ -r не работает должным образом? :
источник