Вопрос или проблема
В настоящее время я использую утилиту для архивирования в командной строке для создания ZIP-архива.
Мне нужно создать специфическую структуру папок внутри архивного файла, чтобы при извлечении все данные находились в правильной структуре.
В данный момент, чтобы получить правильную структуру, я использую robocopy для копирования всех данных из разных мест в свою предпочтительную структуру папок, а после этого я использую утилиту архивирования для создания архива.
Размер данных становится довольно большим, поэтому я хотел бы пропустить часть с robocopy и добавить данные напрямую в архив.
Кто-нибудь знает утилиту архивирования на основе командной строки, которая позволяет указывать папку внутри архива?
Например, копия из местоположения может быть c:\folder1\folder2\folder3*.*
и c:\somewhereelse\folder2\folder3*.*
, я хочу, чтобы это попало в одну папку внутри ZIP-файла под названием ‘contents’.
Таким образом, когда архив будет извлечён, все файлы будут извлечены в папку под названием ‘contents’, относительно того, куда бы он ни был извлечён.
PS – должно работать в Windows CMD.
7z не позволяет этого сделать напрямую, но позволяет переименовывать файлы внутри архива, что может быть возможным обходным решением. См. этот ответ.
7z rn <имя_архива> <исходный_файл_1> <файл_назначения_1> [ <исходный_файл_2> <файл_назначения_2> ... ]
Ответ или решение
Архивирование файлов в командной строке Windows: Идеальное решение для создания структурированных архивов
При работе с большими объемами данных архивирование становится важным инструментом для эффективного управления и хранения информации. Если вы используете командную строку Windows для создания архивов, вам может понадобиться способ организовать папки и файлы внутри архивов таким образом, чтобы они имели правильную структуру при извлечении. Рассмотрим решение этой задачи с помощью утилиты 7-Zip.
Задача
Ваша задача заключается в том, чтобы создать архив, содержащий файлы из различных источников, в единую папку внутри архива под названием "contents". Например, если ваши файлы находятся по следующим путям:
C:\folder1\folder2\folder3\*.*
C:\somewhereelse\folder2\folder3\*.*
Вы хотите, чтобы эти файлы автоматически помещались в архив в структуру:
archive.zip
└── contents
├── file1
├── file2
└── file3
При этом вы хотите избежать лишнего шага с помощью использования утилиты robocopy для предварительной подготовки структуры папок.
Решение с помощью 7-Zip
7-Zip предоставляет мощные возможности командной строки, включая возможность переименования файлов внутри архива. Хотя утилита не поддерживает возможность прямого указания папок в командной строке при добавлении файлов, мы можем использовать ее функционал для переименования файлов после того, как они будут добавлены в архив.
Вот шаги, которые вы можете предпринять:
-
Установите 7-Zip (если он еще не установлен) и добавьте его в переменную PATH для удобства использования в командной строке.
-
Создайте архив и добавьте файлы:
7z a archive.zip "C:\folder1\folder2\folder3\*.*" "C:\somewhereelse\folder2\folder3\*.*"
- Переименуйте файлы внутри архива для их перемещения в папку "contents":
7z rn archive.zip "folder3\*.*" "contents\*"
Обратите внимание, что если в «folder3» находятся подкаталоги, это потребует дополнительной обработки, например, перебора всех подкаталогов вручную.
Преимущества данного подхода
- Избежание предварительного копирования: Вы экономите время и ресурсы, избегая этапа с robocopy.
- Гибкость: Легко можно изменить структуру архивируемых данных, просто изменив команду для добавления.
- Широкая поддержка форматов: 7-Zip поддерживает не только ZIP, но и множество других форматов архивов.
Заключение
Использование командной строки для архивирования может значительно упростить процесс управления данными. Интеграция утилиты 7-Zip позволяет создать структурированные архивы без лишних шагов, что особенно важно при работе с большими объемами информации. Этот метод не только ускоряет процесс архивирования, но и обеспечивает сохранение нужной структуры папок при извлечении файлов.
Таким образом, за счет применения инструментов, предложенных в данной статье, вы сможете оптимизировать процесс архивирования и упростить управление данными в вашей профессиональной деятельности.