Eu tenho um monte de arquivos como este:
C:\G\G1\35antique-shop.mp3
C:\G\G2\35antique-shop.mp3
C:\G\G1\09saguri.mp3
C:\G\G2\09saguri.mp3
Eu só quero saber como manter a estrutura da pasta durante o arquivamento. Isso é mais importante do que duplicar, saber como resolver isso, seria um bônus.
@Lamb "Deseja arquivar apenas arquivos seletivos (não todo o conteúdo da pasta) das pastas G1 e G2?"
Isso quase diz tudo, mas vou tentar melhorar: Não só quero mover apenas alguns arquivos selecionados para um arquivo morto. Eu também tenho uma lista desses arquivos, incluindo nomes de caminhos para cada arquivo.
Portanto, no SubDir1, pode haver 10 arquivos, dos quais eu quero compactar três, e no SubDir1 \ sub2 pode haver cinco arquivos, dos quais eu quero compactar todos os cinco. Os arquivos que eu preciso arquivar estão em um arquivo de lista.
Pode haver arquivos duplicados, então minha esperança é que, com os subdiretórios adicionados, o 7-Zip NÃO os veja como duplicados.
E eu gosto de fazê-lo na linha de comando.
Eu tentei um arquivo em lotes como este:
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
Isso também significa que os arquivos 01antique-shop.mp3, 02antique-shop.mp3, ...., até 33antique-shop.mp3 e 34antique-shop.mp3, NÃO devem ser arquivados.
Os nomes das pastas (= subdiretórios) não foram adicionados ao MyArchive.7z e esse é o problema.
Obviamente, eu gostaria de usar apenas um comando com um arquivo de lista, mas isso também não funciona.
Eu tentei:
7z a -mx0 -tzip C:\$$-edrive\F-G-H.zip @fgh.txt
que realmente funciona muito bem no que diz respeito à seleção, mas NÃO mantém a estrutura de diretórios. Infelizmente.
Como eu faço isso?
fonte
Respostas:
A versão estável mais recente do 7-Zip (15.14) possui o switch -spf que permite o armazenamento do caminho absoluto.
Por exemplo, se o arquivo list.txt for
o comando
7z a p.7z -spf @list.txt
produzirá um arquivo armazenando os caminhos absolutos, como está na lista. Como alternativa, o comando7z a p.7z -spf2 @list.txt
removerá a letra da unidade:Se o arquivo list.txt for
o comando
7z a p.7z @list.txt
armazenará os caminhos relativos como está na lista, nas versões 9.20 e 15.14.Fiz mais testes com o switch -spf. Os resultados estão aqui .
fonte
Consegui arquivar um diretório com subdiretórios usando o seguinte :
fonte
Tente isso:
O problema parece ser que as pessoas solicitam há anos opções de armazenamento de caminho adequadas (assim como têm a capacidade de modificar arquivos com vários volumes ), mas o autor não parece estar interessado. Isso é parte da razão pela qual comecei a usar tanto o WinRAR.
Se você tiver um arquivo de listagem, o 7-Zip não armazenará caminhos se os arquivos a serem arquivados não compartilharem um único diretório de nível superior. Por exemplo, se você tiver Input.txt contendo o seguinte:
Se você executar
7z a MyArchive.7z @Input.txt
, verá que os caminhos foram completamente removidos, o que parece completamente inverso para mim (a OTOHrar a MyArchive.rar @Input.txt
faz o trabalho muito bem).Portanto, para superar a deficiência do 7-Zip, você pode usar um arquivo em lotes da seguinte maneira:
Nota: Substitua
D:\MyArchive.7z
pelo caminho apropriado para o seu arquivo de destino. Além disso, o arquivo em lotes deve funcionar independentemente de você ter citado caminhos no seu arquivo de listagem ou não.Editar: se o seu arquivo de lista se parecer com:
ou
edite-o para ficar assim:
Agora, assumindo que todos os arquivos a serem arquivados estejam em
C:\$$-edrive
, navegue até C: \ e execute7z a C:\MyArchive.7z @C:\Input.txt
. Usando um arquivo de lista, os caminhos serão salvos somente se não houver letras de unidade, nenhuma barra invertida inicial e se o diretório de nível superior (raiz) for o mesmo para todos os arquivos. Além disso, para obter melhores resultados, aconselho a não criar o MyArchive.7z em C: \ $$ - edrive.fonte
O 7-Zip os verá como duplicados, independentemente, e os ignorará. Se existe alguma maneira de contornar isso, eu nunca a encontrei - sempre divido o trabalho em vários arquivos.
fonte
%ZDIR%\7z a -t7z -r -mx=1 %ZIP%\mydocu "c:\My Documents\*.*" -wc:\temp
ondeZDIR
está o caminho para o 7-Zip eZIP
a unidade de destino.Não sabe como ajudar com duplicatas. No entanto, acho que um sistema mais conveniente do que um lote com um comando completo seria criar um listfile.txt:
E depois comprima todos eles com
7z a -r -tzip archive.zip @listfile.txt
fonte
Eu criei um script bat para usar com totalcmd "tot-zip.bat":
Em totalcmd, crie um atalho para ele:
Então, quando você quiser compactar alguns arquivos / pastas e preservar a estrutura de pastas em relação a
%TOP_DIR%
você, basta selecionar os arquivos necessários (em algum lugar interno%TOP_DIR%
) e pressionar o botão.fonte