Относительный путь к файлам 7-ZIP

Вопрос или проблема

Мне нужно создать архив с несколькими файлами, расположенными в подкаталогах. Например:

  • …/documents/offers/001.pdf
  • …/documents/offers/002.pdf
  • …/documents/drawings/001.dwg
  • …/documents/drawings/002.dwg

Я хотел бы добавить файлы 001.pdf и 001.dwg, сохраняя структуру каталогов из директории, где хранится файл 7za.exe.

Файлы будут добавлены с использованием абсолютного пути (с использованием базы данных для архивации некоторых файлов)

Я проверил доступные ключи, но не нашел ничего, что описывает то, что я хочу сделать

Добавление каталога работает, но я не хочу все файлы, только некоторые из них.

Следующее использует команду Windows “forfiles” вместе с 7zip. Она захватывает все файлы в каталоге C:\yourPath (/s = рекурсивно), где дата равна или больше заданной даты (/d 01/18/2018). Параметр /m . говорит, что нужно рассматривать только файлы, а не каталоги, в отношении предельной даты. Параметр -spf сообщает 7zip, что вам нужен полный квалифицированный путь. (-spf доступен как минимум в версии 15 7zip). “@path” – это параметр, используемый forfiles для каждого найденного файла, который соответствует критериям.

forfiles /s /m *.* /p C:\yourPath /c “cmd /c 7z a -spf -t7z c:\yourArchive.7z @path” /d 01/18/2018

Ответ или решение

При работе с архивированием файлов с помощью 7-Zip вам может понадобиться сохранить относительные пути к файлам, которые вы хотите добавить в архив, сохраняя структуру каталогов. В этой статье мы рассмотрим, как это можно сделать, используя команду 7z для выбора конкретных файлов и сохранения относительных путей к ним.

Сохранение относительных путей при архивировании файлов с 7-Zip

Контекст задачи

Вы имеете дело с набором файлов, которые находятся в подкаталогах, и хотите создать архив, включающий только определенные файлы, при этом сохраняя оригинальную структуру каталогов. Ваш пример содержит следующие файлы:

  • .../documents/offers/001.pdf
  • .../documents/offers/002.pdf
  • .../documents/drawings/001.dwg
  • .../documents/drawings/002.dwg

Задача состоит в том, чтобы заархивировать файлы 001.pdf и 001.dwg, используя абсолютные пути, но сохраняя относительную структуру от каталога, в котором находится исполняемый файл 7za.exe.

Решение с использованием командной строки

  1. Открытие командной строки: Запустите командную строку Windows от имени администратора.

  2. Переход в каталог с 7za.exe: Используйте команду cd, чтобы перейти в каталог, в котором находится файл 7za.exe.

    cd C:\путь\к\каталогу\с\7za
  3. Создание архива: Используйте команду 7z a, чтобы создать архив, добавив нужные файлы. При этом важно указать путь к файлам с параметром -ir!, который позволяет включать только указанные файлы, сохраняя относительные пути:

    7z a -t7z C:\путь\к\архиву\yourArchive.7z -ir!documents\offers\001.pdf -ir!documents\drawings\001.dwg -spf

    В этом примере:

    • -t7z указывает формат архива (7z).
    • -ir! позволяет указать, какие файлы нужно добавить, используя относительные пути.
    • -spf сохраняет полные пути к файлам в архиве.

Примечания

  • Использование флага -spf (сохранить полный путь файла) требует, чтобы структура каталогов в пути файлов была правильной относительно местоположения исполняемого файла 7za.exe. Убедитесь, что подкаталоги, указанные в относительных путях, присутствуют.

  • Если вам нужно добавить более сложные условия (например, выбирать файлы по дате или определённым критериям), можете использовать условие forfiles вместе с 7-Zip, как оно было описано в вашем запросе.

Заключение

С помощью команды 7z и соответствующих параметров вы можете эффективно создать архив с нужными вам файлами, сохраняя их относительные пути. Это позволяет значительно упростить управление файлами и обеспечивать их легкую доступность без необходимости повторного поиска по структуре каталогов. Если у вас есть дополнительные вопросы по работе с 7-Zip, не стесняйтесь задавать их.

Оцените материал
Добавить комментарий

Капча загружается...