1

Например, у меня есть эта структура каталогов:

[C:\]
+ [Documents]
  + [Work] 
    + [Presentation]
      - Presentation A.pptx
      - Presentation B.pptx
      - Presentation C.pptx
      - Presentation D.pptx
    + [Account]
      - General Ledger.xlsx
      - Additional Report.xlsx
  + [Home]
    + [Kid's School]
      - School Enrollment List.docx
      - Weekly Newsletter 1.pdf
      - Weekly Newsletter 2.pdf
      - Weekly Newsletter 3.pdf
    + [Email Attachment]
      - Stores Weekly Discount.pdf
      - Teddy's Birthday Photo.jpg

Предполагается, что я хочу только zip:

  • Презентация B.pptx
  • Дополнительный отчет.xlsx
  • Еженедельный бюллетень 3.pdf
  • Вся папка [Email Attachment]

Но я хочу сохранить структуру папок, чтобы файл zip содержал такую структуру:

Documents\Work\Presentation\Presentation B.pptx
Documents\Work\Account\Additional Report.xlsx
Documents\Home\Kid's School\Weekly Newsletter 3.pdf
Documents\Home\Email Attachment\Stores Weekly Discount.pdf
Documents\Home\Email Attachment\Teddy's Birthday Photo.jpg

Как это сделать? Все, что я до сих пор делал, - это архивировал всю папку «Документы», а затем выборочно стирал ее в zip-файле. Но это занимает очень много времени, потому что реальный случай - уровень папок глубокий, с сотнями файлов и размером файлов.

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

1 ответ1

1

7-zip должен иметь возможность использовать список файлов для архивирования, и он может использовать либо собственный формат .7z , либо обычный формат .zip .

На этой странице описано, как это должно работать, используется функция списка файлов @file :

Использование списка файлов

Файлы списка - это файлы, которые содержат список из одного или нескольких файлов и / или каталогов, разделенных символами новой строки. Утилиты командной строки 7-Zip и IZArc могут использовать файлы списков для обработки файлов и каталогов. 7-Zip по умолчанию использует кодировку UTF-8 для файлов списка, но при необходимости кодирование можно изменить в командной строке, используя переключатель «-scs» (дополнительную информацию см. В разделе «Версия командной строки» в 7-zip.chm). ,

Синтаксис командной строки для сжатия файлов и / или каталогов с помощью файла списка:

Для 7-Zip:

7za a -tzip "C:\Your Folder\yourarchive.zip @"C:\Your Folder\yourlistfile.txt"
  • 7za - исполняемый файл командной строки 7-Zip.
  • a - добавить файлы в архивную команду.
  • -tzip - установить тип архива в zip-файл (необязательно, если не используется другой формат сжатия).

Использование cygwin, а затем использование инструментов linux, таких как tar тоже должно работать, но это определенно излишне и не нужно просто для zip-программы. Есть несколько tar для программ Windows , но я бы придерживался 7zip.

Другой идеей может быть отдельная папка, в которой есть только ссылки на нужные файлы с сохранением исходной структуры папок. Это создаст "зеркало" оригинальных файлов, которые всегда идентичны их связанным оригиналам. Затем просто создайте резервные копии всех файлов в этой отдельной папке, если только в них содержатся фактические целевые файлы ссылок, а не только ссылки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .