Сжатие только файлов с использованием 7z без сохранения пути
Я использую исполняемую командную строку 7z для zip файлов, но я вижу, что при добавлении в архив путь к файлам сохраняется в архиве.
Итак, если я делаю
7z a -tzip myzip.zip dir1\dir2\*
архив myzip.zip будет содержать путь dir1\dir2. Я не хочу этого, но я хочу, чтобы только файлы были добавлены в zip файл без сохранения путей.
Я искал совсем немного, но, похоже, не нашел способ сделать это, может быть, я пропустил что-то очевидное?
Спасибо
Ответы
Ответ 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