Olá pessoal,
Boa noite.
Neste post rápido vou demonstrar como compactar diretórios e sub-diretórios criando 1 arquivo zip com todo o conteúdo ou 1 arquivo ZIP por diretório, utilizando o 7-Zip, o melhor compactador de arquivos, na minha opinião, e o prompt do DOS (CMD).
Eu utilizo bastante esse pequeno script no meu dia a dia, principalmente para armazenar os scripts e logs das solicitações e projetos que atendo. Essa semana, tive a necessidade de utilizar esses scripts novamente quando gerei arquivos CSV grandes (acima de 2 GB por arquivo) com várias informações extraídas do banco de dados, utilizando a stored procedure stpExporta_Query_Txt, disponível no post SQL Server – Como exportar dados do banco para arquivo texto (CLR, OLE, BCP).
Para disponibilizar esses arquivos para a solicitante, eu queria compactá-los em 1 arquivo ZIP para cada arquivo gerado, mas eram 65 arquivos CSV, o que iria me demandar um pouco de tempo.
A solução para este problema, foi recorrer a um dos scripts abaixo, que preparei para 3 tipos de necessidades. Nestes exemplos abaixo, vou utilizar a seguinte estrutura:
Criar 1 arquivo ZIP para cada sub-diretório
Neste primeiro exemplo, vou demonstrar como ler todos os diretórios da pasta corrente e criar 1 arquivo zip para cada diretório da pasta corrente. Os sub-diretórios farão parte do arquivo Zip criado.
Código-fonte:
1 2 |
for /d %X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%X.zip" "%X\" pause |
Criar 1 arquivo ZIP com o conteúdo dos sub-diretórios
Neste segundo exemplo, vou demonstrar como ler todos os diretórios da pasta corrente e criar 1 arquivo zip com esse conteúdo. Os sub-diretórios farão parte do arquivo ZIP criado.
Código-fonte:
1 2 |
for /d %X in (*) do "C:\Program Files\7-Zip\7z.exe" a "Arquivo.zip" "%X\" pause |
Criar 1 arquivo ZIP para cada arquivo da raiz
Neste terceiro e último exemplo, vou demonstrar como ler os arquivos que estão na pasta corrente e criar 1 arquivo zip para arquivo. Os diretórios e sub-diretórios não são considerados, apenas os arquivos que estão na raiz.
Código-fonte:
1 2 |
for %X in (*.txt) do "C:\Program Files\7-Zip\7z.exe" a "%X.zip" "%X" pause |
And that's it, folks!
Espero que esse post seja útil pra vocês também!
Abraço!
como compactar diretórios arquivos batch em lote via comando linha de comando command line compress files directory folders shell cmd prompt dos
como compactar diretórios arquivos batch em lote via comando linha de comando command line compress files directory folders shell cmd prompt dos
como adicionar uma data e tempo no Criar 1 arquivo ZIP com o conteúdo dos sub-diretórios
Excelente. Durante compactação, tem como renomear as pastas compactadas?
Meus parabéns, seus códigos me ajudaram muito. Estava bem difícil fazer um Bat usando o 7Zip e você conseguiu fazer isto.
Post perfeito… ainda mais por utilizar uma solução free…
mas por não ter explicado o código não consigo alterar o local da criação do arquivo ZIP.
Criar o arquivo ZIP em outro diretório.
Opa que poste bacana, voce teria algum script de backup sql server que gere o arquivo em zip ? ou em rar ?
Obrigado pelo feedback, Jorge! Em breve, farei o post para compactar arquivos no SQL Server. Aguarde… rs