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.
Exand-Archive
e Compress-Archive
. Honra onde a honra é devida.
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.
Exand-Archive
e Compress-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/
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:
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]
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
O 7-Zip , é de código aberto, gratuito e suporta uma ampla variedade de formatos.
7z.exe x myarchive.zip
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
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.
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)
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:
C:\>pkunzip c:\myzipfile.zip c:\extracttothisfolder\
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.
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