Создайте 7-Zip, включающий только указанную папку и исключающий определенные расширения. Нет сканирования

Я пытаюсь создать 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 вариант, но я не уверен, что.

2 ответа

7-Zip поиск на основе текущего каталога. Этот бит информации явно не задокументирован, но он подразумевается в справке по команде Add:

cd /D c:\dir1\
7z a c:\archive3.zip dir2\dir3\ 

Имена файлов в архиве c:\archive3.zip будут содержать префикс dir2\dir3\, но они не будут содержать префикс c:\dir1\.

Вам нужно изменить текущий каталог перед запуском 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Убедитесь, что вы прочитали справку и поняли требования и эффекты этого параметра, а также протестировали его, чтобы убедиться, что он не оказывает негативного влияния на вашу среду.

Да, опция -r не обязательно делает то, что вы ожидаете. Это теперь упоминается в FAQ: Почему ключ -r не работает должным образом?:

Почему ключ -r не работает должным образом?

В большинстве случаев вам не нужен ключ -r. 7-Zip может сжимать подпапки даже без ключа -r.

Пример 1:

7z.exe ac: \ a.7z "C:\Program Files" полностью сжимает "C:\Program Files", включая все подпапки.

Пример 2:

7z.exe a -rc: \ a.7z "C:\Program Files" ищет и сжимает "Program Files" во всех подпапках C:\ (например, в "C:\WINDOWS").

Если вам нужно сжать только файлы с некоторым расширением, вы можете использовать ключ -r: 7z a -r c:\a.zip c:\dir*.txt сжимает все *.txt файлы из папки c: \ dir \ и все это вложенные папки.

Другие вопросы по тегам