У меня есть следующая структура папок:
- корень
- folder1
- folder2
- folder3
- 7za.exe
Я хочу запустить инструмент командной строки 7-zip, чтобы сжать все файлы в folder1
zip-файл с именем folder1.zip
.
Запуск следующего
7za.exe a -tzip folder1.zip folder1\\*.*
производит ZIP-файл, как ожидалось. Тем не менее, когда я открываю zip-файл, в нем есть папка с именем folder1
, а внутри него у меня есть все файлы, которые были в этой папке. Я не хочу, чтобы имя папки добавлялось в zip-папку, т.е. я хотел бы добавить все файлы в формате «Flat».
Я также не хочу рекурсивно запускать инструмент командной строки для каждого отдельного файла / папки.
Есть ли переключатель, который обеспечивает эту функциональность?
cd
в папку 1 и7za.exe a -tzip ..\folder1.zip *.*
?Ответы:
Из файла справки 7-Zip :
Таким образом, команда, которую вы хотите, была бы:
7za.exe a folder1.zip .\folder1\*
Также обратите внимание на обработку символов подстановки в 7-Zip. Он не рассматривается
*.*
как «все файлы» - это означает «все файлы с точкой в имени файла». Файлы без расширения будут пропущены. Если вы действительно хотите все файлы, просто используйте*
вместо этого.Наконец,
-tzip
параметр не нужен, если имя файла архива заканчивается.zip
. 7-Zip достаточно умен, чтобы выяснить, какой формат вы хотите в этих случаях. Требуется только в том случае, если вам нужно собственное расширение (например,7za.exe a -tzip foo.xpi <files>
для надстройки Mozilla).источник
Это сработало для меня
Рассмотрим структуру папок, например C: \ Parent \ SubFolders ..... И вы хотите создать parent.zip, который будет содержать все файлы и папки C: \ Parent без родительской папки [т.е. он будет начинаться с SubFolders .....]
Это создаст Parent.zip в C: \ Parent
источник
*.*
«все файлы», а «все файлы, у которых точка является частью имени файла». Таким образом, этот ответ фактически пропустит файлы, которые не имеют расширения (это отмечено в принятом ответе).Просто чтобы расширить принятый ответ (я не смог добавить комментарий там):
В Linux добавление «*» для меня не сработало, поэтому я придумал более подробную командную строку, которая дала желаемый результат:
===========
объяснение сценария:
Я надеюсь, что это может быть полезно для кого-то.
источник
*
в кавычки (в противном случае оболочка развернет его в файлы в этом месте).Как насчет этого. например, папка / вложенная папка1, папка / вложенная папка2
* Имя архива будет родительской папкой.
Просто верно?
источник