У меня есть куча таких файлов:
C:\G\G1\35antique-shop.mp3
C:\G\G2\35antique-shop.mp3
C:\G\G1\09saguri.mp3
C:\G\G2\09saguri.mp3
Я просто хочу знать, как сохранить структуру папок при архивировании. Это важнее, чем дублирование, знать, как решить эту проблему, было бы бонусом.
@Lamb "Хотите ли вы архивировать только отдельные файлы (не все содержимое папки) из папок G1 и G2?"
Это почти все говорит, но я постараюсь улучшить: я не только хочу переместить только некоторые выбранные файлы в архив. У меня также есть список этих файлов, включая имена путей к каждому файлу.
Итак, в SubDir1 может быть 10 файлов, из которых я хочу сжать три, а в SubDir1 \ sub2 может быть пять файлов, из которых я хочу сжать все пять. Файлы, которые мне нужно заархивировать, находятся в списке файлов.
Там могут быть дубликаты файлов, поэтому я надеюсь, что с добавленными подкаталогами 7-Zip НЕ видит их как дубликаты.
И мне нравится делать это в командной строке.
Я пробовал командный файл, как это:
7z a -r MyArchive.7z C:\G\G1\35antique-shop.mp3
7z a -r MyArchive.7z C:\G\G2\35antique-shop.mp3
7z a -r MyArchive.7z C:\G\G1\09saguri.mp3
7z a -r MyArchive.7z C:\G\G2\09saguri.mp3
Это также означает, что файлы 01antique-shop.mp3, 02antique-shop.mp3, ...., til 33antique-shop.mp3 и 34antique-shop.mp3 НЕ должны архивироваться.
Foldernames (= подкаталоги) не были добавлены в MyArchive.7z, и это проблема.
Очевидно, я хотел бы использовать только один коммандос со списком файлов, но это тоже не работает.
Я пробовал:
7z a -mx0 -tzip C:\$$-edrive\F-G-H.zip @fgh.txt
который на самом деле работает довольно хорошо, поскольку выбор идет, но он НЕ сохраняет структуру каталогов. К сожалению.
Как мне это сделать?
источник
Ответы:
В последней стабильной версии 7-Zip (15.14) есть ключ -spf, который позволяет хранить данные по абсолютному пути.
Например, если файл list.txt является
Команда
7z a p.7z -spf @list.txt
создаст архив, хранящий абсолютные пути, как в списке. В качестве альтернативы команда7z a p.7z -spf2 @list.txt
удалит букву диска:Если файл list.txt является
команда
7z a p.7z @list.txt
будет хранить относительные пути, как есть в списке, в обеих версиях 9.20 и 15.14.Я сделал больше тестов с ключом -spf. Результаты здесь .
источник
Я получил его для архивирования каталога с подкаталогами, используя следующее :
источник
Попробуйте это вместо этого:
Проблема , кажется, что люди запрашивали за годы для соответствующих вариантов хранения пути (так же , как они есть на возможность изменять многотомные архивы ), но автор , кажется, не заинтересованы. Это одна из причин, почему я начал так много использовать WinRAR.
Если у вас есть файл списка, 7-Zip не будет хранить пути, если файлы, которые нужно заархивировать, не используют один каталог верхнего уровня. Например, если у вас есть Input.txt, содержащий следующее:
Если вы побежите
7z a MyArchive.7z @Input.txt
, вы увидите, что пути были полностью удалены, что кажется мне совершенно задом наперед (OTOH отлично справляетсяrar a MyArchive.rar @Input.txt
со своей работой).Таким образом, чтобы преодолеть недостаток 7-Zip, вы можете использовать пакетный файл следующим образом:
Примечание. Замените
D:\MyArchive.7z
на правильный путь к вашему архиву назначения. Кроме того, пакетный файл должен работать независимо от того, указали ли вы пути в кавычках в вашем файле списка или нет.Изменить: если ваш список файлов выглядит так:
или же
затем отредактируйте его так, чтобы он выглядел так:
Теперь, предполагая, что все файлы для архивации находятся под
C:\$$-edrive
, перейдите к C: \ и запустите7z a C:\MyArchive.7z @C:\Input.txt
. При использовании файла списка пути будут сохранены только в том случае, если буквы дисков отсутствуют, начальные обратные слешы отсутствуют, а каталог верхнего уровня (корневой) одинаков для всех файлов. Кроме того, для достижения наилучших результатов я советую вам не создавать MyArchive.7z в C: \ $$ - edrive.источник
7-Zip будет видеть их как дубликаты, и пропустить их. Если есть какой-то способ обойти это, я никогда не нашел это - я всегда просто делю работу на несколько архивов.
источник
%ZDIR%\7z a -t7z -r -mx=1 %ZIP%\mydocu "c:\My Documents\*.*" -wc:\temp
гдеZDIR
путь к 7-Zip иZIP
диск назначения.Не уверен, как помочь с дубликатами. Тем не менее, я думаю, что более удобной системой, чем пакет с полной командой, было бы создание файла listfile.txt:
А затем сжать их все
7z a -r -tzip archive.zip @listfile.txt
источник
Я создал скрипт bat для использования с totalcmd "tot-zip.bat":
Затем в totalcmd создайте для него ярлык:
Затем, если вы хотите сжать некоторые файлы / папки и сохранить структуру папок относительно
%TOP_DIR%
вас, просто выберите нужные файлы (где-то внутри%TOP_DIR%
) и нажмите кнопку.источник