Подтвердить что ты не робот

Сжатие только файлов с использованием 7z без сохранения пути

Я использую исполняемую командную строку 7z для zip файлов, но я вижу, что при добавлении в архив путь к файлам сохраняется в архиве.

Итак, если я делаю

7z a -tzip  myzip.zip dir1\dir2\*

архив myzip.zip будет содержать путь dir1\dir2. Я не хочу этого, но я хочу, чтобы только файлы были добавлены в zip файл без сохранения путей. Я искал совсем немного, но, похоже, не нашел способ сделать это, может быть, я пропустил что-то очевидное?

Спасибо

4b9b3361

Ответ 1

Дайте полный путь. Это должно сработать. Не относительный путь от текущего местоположения. Например, я даю ниже, где я хочу, чтобы файлы в папке man5 были заархивированы.

$ 7z a -tzip myzip.zip /home/pradeeban/Desktop/man4/man5/*

Почтовый индекс содержит только файлы без каталогов.

Тогда я дал только относительный путь. У него были каталоги, внутри zip.

$ 7z a -tzip myzip.zip Desktop/man4/man5/*

Пробовал Linux (Ubuntu 12.04). Не уверен, что это отличается от Windows.

Ответ 2

Просто добавьте точку перед контуром, т.е. 7z a -tzip -r myzip.zip .\Relative\Dir\*

Ответ 3

Я открыл способ сделать это, используя относительный путь:

7z a -tzip  myzip.zip %CD%\dir1\dir2\*

% CD% - это то, как вы получаете текущий путь в пакетном файле Windows, но также работает из командной строки. Подробнее о Захват текущего каталога из пакетного файла.

Ответ 4

Как объяснялось в связанном вопросе в 7-zip часто задаваемые вопросы, 7z хранит пути относительно рабочего каталога, поэтому вам нужно сначала cd в желаемый каталог верхнего уровня для архива и запустить 7-zip отсюда.

cd dir1\dir2\
7z a -tzip  myzip.zip *

Если вы запустите его из script и не хотите влиять на него с измененным каталогом, используйте возможности push/pop для каталога, доступные в вашей оболочке по выбору, или запустите cd + 7-zip в запущенном процессе, чтобы не влиять на весь ваш script с измененным каталогом. Например, при запуске Windows, который будет выглядеть следующим образом:

start /D dir1\dir2\ /wait 7z a -tzip  myzip.zip *

Ответ 5

Это сработало для меня

Рассмотрим структуру папок, такую ​​как C:\Parent\SubFolders..... И вы хотите создать parent.zip, который будет содержать все файлы и папки C:\Parent без родительской папки [т.е. он начнется с SubFolders.....]

cd /D "C:\Parent"

"7z.exe" a Parent.zip "*.*" -r

Это создаст Parent.zip в папке C:\Parent