Como descompactar um arquivo usando a linha de comando? [fechadas]
164
Quais comandos podem ser usados através da linha de comando para descompactar um arquivo?
De preferência, algo incorporado ao Windows ou de código aberto / ferramentas gratuitas.
Uma rápida pesquisa no Google revelou isso . Isso funciona no Windows (não está claro se você quer dizer que está usando o Windows ou se o sistema operacional é realmente DOS).
21413 Jeremy
26
A menos que você esteja executando uma versão realmente antiga do Windows (ME ou anterior), a linha de comando do Windows não é DOS. :)
Uma dica. Você precisa do JDK, e não apenas do JRE, se desejar usar jar.
Qben 31/10/12
1
é estranho, o m jar realmente resolve o problema parcialmente, porque é capaz de listar os arquivos dentro do arquivo e extrair os arquivos especificados, no entanto, não é possível extrair todos os arquivos ao mesmo tempo ... muito estranho
mikus
@mikus: por que não, basta usar o comando <code> jar.exe xvf Compressed.zip </ code>
Xinus
1
java.io.FileNotFoundException: test.zip (O sistema não pode encontrar o arquivo especificado)
markj
Existe uma maneira de especificar uma pasta de destino? (como quando você escolhe a opção extrair para)?
Leonardo Alves Machado
41
Em primeiro lugar, escreva um utilitário de descompactação usando vbscript para acionar a funcionalidade de descompactação nativa no Windows. Em seguida, distribua o script a partir do seu arquivo em lotes e chame-o. Então é tão bom quanto ficar sozinho. Eu fiz isso no passado para inúmeras tarefas. Dessa forma, não requer a necessidade de aplicativos de terceiros, apenas o arquivo em lote que faz tudo.
' j_unzip.vbs
'
' UnZip a file script
'
' By Justin Godden 2010
'
' It's a mess, I know!!!
'
' Dim ArgObj, var1, var2
Set ArgObj = WScript.Arguments
If (Wscript.Arguments.Count > 0) Then
var1 = ArgObj(0)
Else
var1 = ""
End if
If var1 = "" then
strFileZIP = "example.zip"
Else
strFileZIP = var1
End if
'The location of the zip file.
REM Set WshShell = CreateObject("Wscript.Shell")
REM CurDir = WshShell.ExpandEnvironmentStrings("%%cd%%")
Dim sCurPath
sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
strZipFile = sCurPath & "\" & strFileZIP
'The folder the contents should be extracted to.
outFolder = sCurPath & "\"
WScript.Echo ( "Extracting file " & strFileZIP)
Set objShell = CreateObject( "Shell.Application" )
Set objSource = objShell.NameSpace(strZipFile).Items()
Set objTarget = objShell.NameSpace(outFolder)
intOptions = 256
objTarget.CopyHere objSource, intOptions
WScript.Echo ( "Extracted." )
' This bit is for testing purposes
REM Dim MyVar
REM MyVar = MsgBox ( strZipFile, 65, "MsgBox Example"
"C:\Program Files\7-Zip\7z.exe" a MySuperCoolZipFile.zip "C:\MyFiles\*.jpg" -pmypassword -r -w"C:\MyFiles\" -mem=AES256
Eu mostrei algumas opções.
-r é recursivo. Geralmente o que você deseja com a funcionalidade zip.
a é para "arquivo". Esse é o nome do arquivo zip de saída.
-p é para uma senha (opcional)
-w é o diretório de origem. Isso aninhará seus arquivos corretamente no arquivo zip, sem informações adicionais da pasta.
-mem é a força da criptografia.
Há outros. Mas o acima fará você correr.
NOTA: A adição de uma senha tornará o arquivo zip hostil quando se trata de visualizá-lo através do Windows Explorer. O cliente pode precisar de sua própria cópia do 7-zip (ou winzip ou outro) para visualizar o conteúdo do arquivo.
Obrigado Rich, vou tomar nota disso. Então, aqui está o script para minha própria solução. Não requer ferramentas de descompactação de terceiros.
Inclua o script abaixo no início do arquivo em lotes para criar a função e, em seguida, para chamá-la, o comando é ...
cscript /B j_unzip.vbs zip_file_name_goes_here.zip
Aqui está o script para adicionar ao topo ...
REM Alterando a pasta de trabalho de volta ao diretório atual para compatibilidade com Vista e 7
% ~ d0
CD% ~ dp0
Pasta REM alterada
REM Este script atualiza os arquivos ...
> j_unzip.vbs ECHO '
>> j_unzip.vbs ECHO 'Descompacta um script de arquivo
>> j_unzip.vbs ECHO '
>> j_unzip.vbs ECHO 'É uma bagunça, eu sei !!!
>> j_unzip.vbs ECHO '
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO 'Dim ArgObj, var1, var2
>> j_unzip.vbs ECHO Defina ArgObj = WScript.Arguments
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO If (Wscript.Arguments.Count ^> 0) Então
>> j_unzip.vbs ECHO. var1 = ArgObj (0)
>> j_unzip.vbs ECHO Else
>> j_unzip.vbs ECHO. var1 = ""
>> j_unzip.vbs ECHO End if
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO Se var1 = "", então
>> j_unzip.vbs ECHO. strFileZIP = "exemplo.zip"
>> j_unzip.vbs ECHO Else
>> j_unzip.vbs ECHO. strFileZIP = var1
>> j_unzip.vbs ECHO End if
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO 'A localização do arquivo zip.
>> j_unzip.vbs Conjunto de ECHO REM WshShell = CreateObject ("Wscript.Shell")
>> j_unzip.vbs ECDir REM CurDir = WshShell.ExpandEnvironmentStrings ("%% cd %%")
>> j_unzip.vbs ECHO Dim sCurPath
>> j_unzip.vbs ECHO sCurPath = CreateObject ("Scripting.FileSystemObject"). GetAbsolutePathName (".")
>> j_unzip.vbs ECHO strZipFile = sCurPath ^ & "\" ^ & strFileZIP
>> j_unzip.vbs ECHO 'A pasta para a qual o conteúdo deve ser extraído.
>> j_unzip.vbs ECHO outFolder = sCurPath ^ & "\"
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO. WScript.Echo ("Extraindo arquivo" ^ & strFileZIP)
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO Set objShell = CreateObject ("Shell.Application")
>> j_unzip.vbs Conjunto ECHO objSource = objShell.NameSpace (strZipFile) .Items ()
>> j_unzip.vbs Conjunto ECHO objTarget = objShell.NameSpace (outFolder)
>> j_unzip.vbs ECHO intOptions = 256
>> j_unzip.vbs ECHO objTarget.CopyHere objSource, intOptions
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO. WScript.Echo ("Extraído.")
>> j_unzip.vbs ECHO.
beautiful :) Eu uso isso para baixar a linha de comando 7zip (cujo é zipado executável (como estranho))
Sebastian
Isso está funcionando como esperado, agora eu posso compactar qualquer pasta e fazer exe usando o iexpress e descompactar usando isso. Isso funciona no Windows 10 também.
precisa
9
Há um artigo sobre como obter o arquivo .ZIP interno do Windows com o VBscript aqui:
Não é fácil, mas esta parece ser uma solução muito boa, usando apenas a funcionalidade nativa da pasta zip do Windows. Eu tenho procurado algo assim por um tempo. Obrigado!
Andre Steenveld
5
Originalmente, os arquivos ZIP foram criados com o software de linha de comando MS-DOS do PKWare, os dois programas foram PKZIP.EXE e PKUNZIP.EXE. Acho que você ainda pode baixar o PKUNZIP no site do PKWare aqui:
O Info-ZIP suporta hardware desde microcomputadores até os supercomputadores Cray, rodando em quase todas as versões do Unix, VMS, OS / 2, Windows 9x / NT / etc. (também conhecido como Win32), Windows 3.x, Windows CE, MS-DOS, AmigaDOS, Atari TOS, Acorn RISC OS, BeOS, Mac OS, SMS / QDOS, MVS e OS / 390 OE, VM / CMS, FlexOS, Tandem NSK e Human68K (japonês). Também há algum suporte (antigo) para LynxOS, TOPS-20, AOS / VS e Novell NLMs. As bibliotecas compartilhadas (DLLs) estão disponíveis para Unix, OS / 2, Win32 e Win16, e interfaces gráficas estão disponíveis para Win32, Win16, WinCE e Mac OS.
Copie o código abaixo para um arquivo em lotes e execute. Abaixo, é necessário instalar / acessar o Winzip na sua máquina. Altere as variáveis conforme sua necessidade.
@ECHO OFF
SET winzip_path="C:\Program Files\WinZip"
SET source_path="C:\Test"
SET output_path="C:\Output\"
SET log_file="C:\Test\unzip_log.txt"
SET file_name="*.zip"
cd %source_path%
echo Executing for %source_path% > %log_file%
FOR /f "tokens=*" %%G IN ('dir %file_name% /b') DO (
echo Processing : %%G
echo File_Name : %%G >> %log_file%
%winzip_path%\WINZIP32.EXE -e %%G %output_path%
)
PAUSE
Exand-Archive
eCompress-Archive
. Honra onde a honra é devida.Respostas:
Você poderia usar:
http://membrane.com/synapse/library/pkunzip.html
ou
7zip: http://www.7-zip.org/download.html
Zip de bytes grátis : http://www.freebyte.com/fbzip/
ou infozip: http://infozip.sourceforge.net/
fonte
powershell.exe -NoP -NonI -Command "Expand-Archive '.\file.zip' '.\unziped\'"
Se você já possui java no seu PC e o diretório bin está no seu caminho (na maioria dos casos), você pode usar a linha de comando:
ou se não estiver no seu caminho:
Conjunto completo de opções para a ferramenta jar disponível aqui .
Exemplos:
fonte
Em primeiro lugar, escreva um utilitário de descompactação usando vbscript para acionar a funcionalidade de descompactação nativa no Windows. Em seguida, distribua o script a partir do seu arquivo em lotes e chame-o. Então é tão bom quanto ficar sozinho. Eu fiz isso no passado para inúmeras tarefas. Dessa forma, não requer a necessidade de aplicativos de terceiros, apenas o arquivo em lote que faz tudo.
Eu coloquei um exemplo no meu blog sobre como descompactar um arquivo usando um arquivo em lotes :
Use-o assim:
fonte
O 7-Zip , é de código aberto, gratuito e suporta uma ampla variedade de formatos.
fonte
Como outros já aludiram, o 7-zip é ótimo.
Nota: Vou compactar e descompactar um arquivo. Descompacte está na parte inferior.
Minha contribuição:
Pegue o
Versão da linha de comando 7-Zip
URL atual
http://www.7-zip.org/download.html
A sintaxe?
Você pode colocar o seguinte em um arquivo .bat
Eu mostrei algumas opções.
-r é recursivo. Geralmente o que você deseja com a funcionalidade zip.
a é para "arquivo". Esse é o nome do arquivo zip de saída.
-p é para uma senha (opcional)
-w é o diretório de origem. Isso aninhará seus arquivos corretamente no arquivo zip, sem informações adicionais da pasta.
-mem é a força da criptografia.
Há outros. Mas o acima fará você correr.
NOTA: A adição de uma senha tornará o arquivo zip hostil quando se trata de visualizá-lo através do Windows Explorer. O cliente pode precisar de sua própria cópia do 7-zip (ou winzip ou outro) para visualizar o conteúdo do arquivo.
EDIT ::::::::::::( apenas coisas extras).
Existe uma versão "linha de comando" que provavelmente é mais adequada para isso: http://www.7-zip.org/download.html
(link direto atual (no momento da redação)) http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7za920.zip/download
Portanto, o comando zip seria (com a versão da linha de comando da ferramenta 7 zip).
Agora, a parte descompactada : (para descompactar o arquivo que você acabou de criar)
Como alternativa ao argumento "e", existe um argumento ax.
Documentação aqui:
http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract.htm
fonte
Obrigado Rich, vou tomar nota disso. Então, aqui está o script para minha própria solução. Não requer ferramentas de descompactação de terceiros.
Inclua o script abaixo no início do arquivo em lotes para criar a função e, em seguida, para chamá-la, o comando é ...
cscript /B j_unzip.vbs zip_file_name_goes_here.zip
Aqui está o script para adicionar ao topo ...
fonte
Há um artigo sobre como obter o arquivo .ZIP interno do Windows com o VBscript aqui:
https://www.aspfree.com/c/a/Windows-Scripting/Compressed-Folders-in-WSH/
(A última sinopse do código trata da extração)
fonte
Originalmente, os arquivos ZIP foram criados com o software de linha de comando MS-DOS do PKWare, os dois programas foram PKZIP.EXE e PKUNZIP.EXE. Acho que você ainda pode baixar o PKUNZIP no site do PKWare aqui:
http://www.pkware.com/software-pkzip/dos-compression
A linha de comando real pode ser algo como isto:
fonte
Pegue um executável no info-zip .
fonte
Copie o código abaixo para um arquivo em lotes e execute. Abaixo, é necessário instalar / acessar o Winzip na sua máquina. Altere as variáveis conforme sua necessidade.
fonte