No Windows, você pode compactar alguns arquivos
clique com o botão direito do mouse em → Enviar para → Pasta compactada (zipada)
Descompacte e clique duas vezes no .zip
arquivo e extraia os arquivos.
Existe uma maneira de aplicar essas habilidades a partir de um script (arquivo .bat) sem a necessidade de instalar nenhum software de terceiros ?
windows
batch-file
zip
Roee Gavirel
fonte
fonte
Respostas:
Em 2013, isso não era possível. A Microsoft não forneceu nenhum executável para isso.
Veja este link para ver como VBS faz isso. /superuser/201371/create-zip-folder-from-the-command-line-windows
A partir do Windows 8, o .NET Framework 4.5 é instalado por padrão, com System.IO.Compression.ZipArchive e PowerShell disponíveis, é possível escrever scripts para isso, consulte https://stackoverflow.com/a/26843122/71312
fonte
Para expandir a solução PowerShell de Steven Penny, você pode incorporá-la em um arquivo em lotes chamando powershell.exe assim:
Como disse Ivan Shilo, isso não funcionará no PowerShell 2, requer o PowerShell 3 ou superior e o .NET Framework 4.
fonte
'.'
, por exemplo:powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', '.'); }"
& {}
? Com o PS5, isso também funciona:powershell.exe -nologo -noprofile -command "Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', '.');"
A partir do .NET 4.5 , o PowerShell pode fazer isso:
Nas últimas duas linhas,
bar
efoo
pode ser substituído pelo nome que você deseja que a pasta contenha ou qualquer que seja o nome da pasta preexistente.foo.zip
nos dois casos, atua como o arquivo zip para salvar ou descompactar.fonte
Se você tiver o Java instalado, poderá compactar para um arquivo ZIP usando o
jar
comando:fonte
PowerShell 5.0
De
Microsoft.PowerShell.Archive
você pode usar:Compress-Archive
Expand-Archive
Por exemplo:
Crie a
result.zip
partir daTest
pasta inteira :Extraia o conteúdo da pasta
result.zip
especificadaTest
:fonte
powershell Compress-Archive -Path C:\SomeFile.ext -DestinationPath C:\SomeFile.zip
diretamente da linha de comando sem precisar criar um script (supondo que você tenha o Powershell v5 instalado, o que você pode fazer pelo menos voltando ao Windows 7).Não é exatamente um ZIP, mas a única maneira de compactar um arquivo usando as ferramentas do Windows é:
Para descomprimir:
Exemplo avançado (de ss64.com):
Mais informações: usos avançados do makecab , expand , makecab
fonte
Usando o 7-Zip:
Zip : você tem uma pasta
foo
e deseja compactá-la paramyzip.zip
Descompacte : você deseja descompactá-lo (
myzip.zip
) para o diretório atual (./
)fonte
without the need to install any 3rd party
Eu tenho procurado responder a essa pergunta exata e, a partir de minha pesquisa, a resposta do DiryBoy parece ser precisa.
Eu encontrei o programa compact.exe compacta arquivos, mas não para criar um arquivo altamente compactado (ou conjunto de arquivos). É semelhante à opção que você obtém ao clicar com o botão direito do mouse em uma letra de unidade ou partição no Windows. Você tem a opção de limpar (remover arquivos temporários, etc.), bem como compactar arquivos. Os arquivos compactados ainda estão acessíveis, mas são compactados apenas para criar espaço em uma unidade com pouco espaço.
Eu também encontrei o compress.exe que eu tinha no meu computador. Não é nativo na maioria das máquinas Windows e faz parte do kit de recursos de 2003. Ele cria um tipo de arquivo compactado, mas é realmente mais semelhante aos arquivos de um disco de instalação do Windows (tem o sublinhado como o último caractere da extensão ou nome do arquivo). E o comando extract.exe extrai esses arquivos.
No entanto, o mantra é que, se puder ser feito de forma nativa por meio da GUI, provavelmente haverá uma maneira de fazê-lo por lote, .vbs ou algum outro tipo de script na linha de comando. Como o Windows teve a opção 'enviar para' para criar um arquivo zip, eu sabia que tinha que haver uma maneira de fazê-lo via linha de comando e encontrei algumas opções.
Aqui está um ótimo link que mostra como compactar um arquivo usando comandos nativos do Windows.
/superuser/110991/can-you-zip-a-file-from-the-command-prompt-using-only-windows-built-in-capabili
Testei-o com um diretório contendo vários arquivos e pastas aninhados e funcionou perfeitamente. Basta seguir o formato da linha de comando.
Existe também uma maneira de descompactar os arquivos via linha de comando, que eu também encontrei. Uma maneira, apenas abre uma janela do Explorer mostrando qual é o conteúdo do arquivo compactado. Alguns deles também usam Java, que não é necessariamente nativo do Windows, mas é tão comum que quase parece.
/superuser/149489/does-windows-7-have-unzip-at-the-command-line-installed-by-default
Como descompactar um arquivo usando a linha de comando?
fonte
Você pode usar um script VBScript agrupado em um arquivo BAT. Este código funciona em um PATH relativo.
Não há necessidade de ferramentas ou dependências de terceiros. Basta definir
SOURCEDIR
eOUTPUTZIP
.Nome do arquivo: ZipUp.bat
Exemplo de uso
Como alternativa, você pode parametrizar esse arquivo substituindo a linha
CScript _zipup.vbs %SOURCEDIR% %OUTPUTZIP%
porCScript _zipup.vbs %1 %2
, nesse caso, pode ser chamado ainda mais facilmente, simplesmente chamandoCALL ZipUp C:\Source\Dir C:\Archive.zip
.fonte
Eu tenho um problema com todas essas soluções.
Eles não são exatamente iguais, e todos criam arquivos com uma pequena diferença de tamanho em comparação com os
RMB --> send to --> compressed (zipped) folder
criados na mesma pasta de origem. A diferença de tamanho mais próxima que tive é de 300 KB de diferença (script> manual), feita com:(Observe o -CompressionLevel . Existem três valores possíveis : Mais rápido, Sem compactação e Ótimo, (Padrão: Ótimo))
Eu queria criar um arquivo .bat que comprima automaticamente uma pasta de plug-in do WordPress em que estou trabalhando, em um arquivo .zip, para que eu possa carregá-lo no site do WordPress e testar o plug-in.
Mas, por alguma razão, não funciona com nenhuma dessas compressões automáticas, mas funciona com a compressão manual de RMB, o que acho realmente estranho.
E os arquivos .zip gerados por script quebram os plugins do WordPress a ponto de não poderem ser ativados e também não podem ser excluídos de dentro do WordPress. Eu tenho que fazer o SSH no "verso" do servidor e excluir os arquivos de plug-in enviados manualmente, manualmente. Enquanto os arquivos gerados manualmente por RMB funcionam normalmente.
fonte
Se você precisar fazer isso como parte de um script, a melhor maneira é usar Java. Supondo que o diretório bin esteja no seu caminho (na maioria dos casos), você pode usar a linha de comando:
Se o Java não estiver no seu caminho, faça referência diretamente a ele:
fonte
Código aberto é seu amigo :-)
Aqui está o descompacte : http://gnuwin32.sourceforge.net/packages/unzip.htm
Também existe um comando ZIP: http://gnuwin32.sourceforge.net/packages/zip.htm
O download dos binários é suficiente.
fonte
Esta é uma versão atualizada da resposta fornecida por @ PodTech.io
Esta versão tem todo o código vbs escapado corretamente no arquivo em lotes. Também é criado em uma sub-rotina, que pode ser chamada com uma única linha de qualquer lugar do seu script em lote:
fonte
Você diz que está tentando fazer isso sem um software de terceiros. Não tenho certeza se você consideraria o software "de terceiros" do .NET.
Mas você pode criar seu próprio utilitário de linha de comando no .NET. Não deve exigir mais do que algumas linhas de código.
Classe ZipFile
fonte
Adicionando a resposta de @Jason Duffett e seus comentários, aqui está um script que obtém entrada e saída (nome do arquivo e nome do diretório, respectivamente) do usuário:
Uso:
fonte
Para compactar um arquivo:
fonte
Você pode descompactar um arquivo compactado do Windows compactado ou nativo usando o comando Expandir , por exemplo
fonte
Expand file.zip file
apenas copia o zip para outro arquivo sem a extensão. Não descompacta o ZIP em uma pasta.