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.


1
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. :)
Tyler McHenry

A maneira mais fácil de descompactar um arquivo é usando unzip.exe. Exemplo: unzip.exe source.zip -d target_dir. URL: stahlworks.com/dev/index.php?tool=zipunzip
zappee

2
O Windows com o Powershell5 pode fazer isso nativamente com Exand-Archivee Compress-Archive. Honra onde a honra é devida.
LosManos

1
descompacte [nome do arquivo] .zip
Amranur Rahman 31/12/18

Respostas:


53

11
O primeiro URL listado é um verdadeiro aplicativo de 16 bits, portanto, não funciona em sistemas operacionais x64. Apenas um aviso.
Mark Henderson

38
se você estiver no Windows 7 ou 10 com PowerShell, pode usar:powershell.exe -NoP -NonI -Command "Expand-Archive '.\file.zip' '.\unziped\'"
AK_

@AK_ e o Windows 8 ou 8.1?
19418 Frank Vu

2
@AK_, você deve fazer sua própria resposta.
BrainStone

221

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:

jar xf test.zip

ou se não estiver no seu caminho:

C:\Java\jdk1.6.0_03\bin>jar xf test.zip

Conjunto completo de opções para a ferramenta jar disponível aqui .

Exemplos:

Extract jar file
    jar x[v]f jarfile [inputfiles] [-Joption] 
    jar x[v] [inputfiles] [-Joption]

37
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.

Eu coloquei um exemplo no meu blog sobre como descompactar um arquivo usando um arquivo em lotes :

' 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"

Use-o assim:

cscript //B j_unzip.vbs zip_file_name_goes_here.zip

3
Geralmente é considerado bom colocar o código em sua resposta e geralmente ruim vincular o código - apenas um aviso!
Ricos Bradshaw

39

O 7-Zip , é de código aberto, gratuito e suporta uma ampla variedade de formatos.

7z.exe x myarchive.zip

1
se um o conteúdo extraído já existem, e você deseja substituir o conteúdo existente sem ser solicitado, em seguida, usar "7z.exe x -y myarchive.zip"
Suketu Bhuta

22

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

"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.

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).

"C:\WhereIUnzippedCommandLineStuff\7za.exe" a MySuperCoolZipFile.zip "C:\MyFiles\*.jpg" -pmypassword -r -w"C:\MyFiles\" -mem=AES256

Agora, a parte descompactada : (para descompactar o arquivo que você acabou de criar)

"C:\WhereIUnzippedCommandLineStuff\7zipCommandLine\7za.exe" e MySuperCoolZipFile.zip "*.*" -oC:\SomeOtherFolder\MyUnzippedFolder -pmypassword -y -r

Como alternativa ao argumento "e", existe um argumento ax.

  e: Extract files from archive (without using directory names)
  x: eXtract files with full paths

Documentação aqui:

http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract.htm


11

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.

2
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



3

Pegue um executável no info-zip .

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.


1

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.