Сжатие только файлов с использованием 7z без сохранения пути
Я использую исполняемый файл командной строки 7z для архивирования файлов, но вижу, что при добавлении в архив путь к файлам сохраняется в архиве.
Так что если я сделаю
7z a -tzip myzip.zip dir1\dir2\*
архив myzip.zip будет содержать путь dir1\dir2. Я не хочу этого, скорее, я хочу, чтобы в zip-файл добавлялись только файлы без сохранения путей. Я искал совсем немного, но, похоже, не нашел способа сделать это, может быть, я упускаю что-то очевидное?
Спасибо
5 ответов
Дайте полный путь. Это должно работать. Не относительный путь от текущего местоположения. Например, я привожу ниже, где я хочу, чтобы файлы в папке man5 были заархивированы.
$ 7z a -tzip myzip.zip /home/pradeeban/Desktop/man4/man5/*
Почтовый индекс содержал только файлы, без каталогов.
Тогда я дал только относительный путь. У этого были каталоги, внутри почтового индекса.
$ 7z a -tzip myzip.zip Desktop/man4/man5/*
Пробовал с Linux (Ubuntu 12.04). Не уверен, отличается ли это от Windows.
Просто добавьте точку перед путем, т.е.7z a -tzip -r myzip.zip .\Relative\Dir\*
Я нашел способ сделать это, используя относительный путь:
7z a -tzip myzip.zip %CD%\dir1\dir2\*
% CD% - это способ получения текущего пути в пакетном файле Windows, но он также работает из командной строки. Подробнее о захвате текущего каталога из командного файла.
Как объяснено в соответствующем вопросе в FAQ пользователя 7-zip, 7z хранит пути относительно рабочего каталога, поэтому вам нужно будет сначала cd
в нужный каталог верхнего уровня для архива и запустите 7-zip отсюда.
cd dir1\dir2\
7z a -tzip myzip.zip *
Если вы запускаете его из скрипта и не хотите влиять на него с измененным каталогом, используйте средства push/pop для каталогов, доступные в выбранной вами оболочке, или запускайте cd+7-zip в порожденном процессе, чтобы избежать влияния на весь ваш скрипт с измененным каталогом. Например, используя запуск Windows, это будет:
start /D dir1\dir2\ /wait 7z a -tzip myzip.zip *
Это сработало для меня
Рассмотрим структуру папок, например C:\Parent\SubFolders..... И вы хотите создать parent.zip, который будет содержать все файлы и папки C: \ Parent без родительской папки [т.е. он будет начинаться из SubFolders.....]
cd /D "C:\Parent"
"7z.exe" a Parent.zip "*.*" -r
Это создаст Parent.zip в C: \ Parent