Создайте 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 \ и все это вложенные папки.