Eu tenho a seguinte estrutura de pastas:
- raiz
- folder1
- folder2
- folder3
- 7za.exe
Eu quero executar a ferramenta de linha de comando 7-zip para compactar todos os arquivos em folder1
um arquivo zip chamado folder1.zip
.
Executando o seguinte
7za.exe a -tzip folder1.zip folder1\\*.*
produz um arquivo zip conforme o esperado. No entanto, quando abro o arquivo zip, ele possui uma pasta chamada folder1
e, dentro dele, tenho todos os arquivos que estavam dentro dessa pasta. Não quero que o nome da pasta seja adicionado à pasta zip, ou seja, eu gostaria de adicionar todos os arquivos em um formato de arquivo "Simples".
Também não quero executar recursivamente a ferramenta de linha de comando para cada arquivo / pasta individual.
Existe um switch que fornece essa funcionalidade?
cd
entrar na pasta1 e7za.exe a -tzip ..\folder1.zip *.*
?Respostas:
No arquivo da Ajuda do 7-Zip :
Portanto, o comando que você deseja seria:
7za.exe a folder1.zip .\folder1\*
Além disso, preste atenção ao manuseio de curingas do 7-Zip. Não é tratado
*.*
como "todos os arquivos" - significa "todos os arquivos com um ponto no nome do arquivo". Arquivos sem extensão serão perdidos. Se você realmente deseja todos os arquivos, basta usar*
.Por fim, o
-tzip
parâmetro não é necessário se o nome do arquivo morto terminar.zip
. O 7-Zip é inteligente o suficiente para descobrir qual formato você deseja nesses casos. É necessária apenas quando você deseja uma extensão personalizada (por exemplo,7za.exe a -tzip foo.xpi <files>
para um complemento Mozilla).fonte
Isso funcionou para mim
Considere a estrutura de pastas como C: \ Parent \ SubFolders ..... E você deseja criar parent.zip que conterá todos os arquivos e pastas C: \ Parent sem pasta pai [ou seja, iniciará a partir de subpastas ...]
Isso criará Parent.zip em C: \ Parent
fonte
*.*
"todos os arquivos", mas "todos os arquivos que possuem um ponto final como parte do nome do arquivo". Portanto, esta resposta realmente omitirá arquivos que não têm uma extensão (isso é observado na resposta aceita).Apenas para expandir a resposta aceita (não pude adicionar comentários):
No Linux, adicionar '*' não funcionou para mim, então acabei inventando uma linha de comando mais detalhada que dava o resultado desejado:
===========
explicação do script:
Espero que possa ser útil para alguém.
fonte
*
aspas (caso contrário, o shell o expandirá para os arquivos deste local).Que tal agora. por exemplo Pasta / subpasta1, Pasta / subpasta2
* O nome do arquivo seria a pasta pai.
Simples né?
fonte