Pergunta

arquivos

Posso unzip através da linha de comando? De preferência usando open source / ferramentas livres.

Outras dicas

Se você já tem java em seu PC, e o diretório bin está em seu caminho (na maioria dos casos), você pode usar a linha de comando:

jar xf test.zip

ou se não em seu caminho:

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

Um conjunto completo de opções para a ferramenta frasco disponível aqui .

Exemplos:

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

Em primeiro lugar, escrever um utilitário de descompactação usando vbscript para acionar a funcionalidade de descompactação nativo no Windows. tubulação, em seguida, fora o script de dentro do seu arquivo em lotes e, em seguida, chamá-lo. Em seguida, ele é tão bom como autônomo. Eu tenho feito isso no passado por inúmeras tarefas. Desta forma, ele não requer necessidade de aplicações de terceiros, apenas o arquivo de um lote que faz tudo.

Eu coloquei um exemplo no meu blog sobre como descompactar um arquivo usando um arquivo de lote :

' 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

7-Zip , é fonte aberta, livre e suporta uma ampla gama de formatos .

7z.exe x myarchive.zip

Como outros já aludido, 7-zip é grande.

Nota: Eu estou indo para zip e descompactar um arquivo. Descompacte está no fundo.

A minha contribuição:

Obter o

7-Zip Command Line Versão

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 é recursiva. Normalmente, o que você quer com a funcionalidade de zip.

a é para o "arquivo". Esse é o nome do arquivo de saída zip.

-p é para uma senha (opcional)

-w é um diretório fonte. Esta vontade ninho seus arquivos corretamente no arquivo zip, sem informações da pasta extra.

MEM é o nível de criptografia.

Existem outros. Mas o acima você vai chegar em execução.

NOTA: Adicionando uma senha fará com que o arquivo zip hostil quando se trata de ver o arquivo 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 ::::::::::: :( coisas só adicional).

Existe uma versão "linha de comando", que é provavelmente mais adequado para isso: http://www.7-zip.org/download.html

(atual (no momento da escrita) link direto) http://sourceforge.net/projects/sevenzip/files /7-Zip/9.20/7za920.zip/download

Assim, o zip comando seria (com a versão de 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, o parte unzip : (para descompactar o arquivo que você acabou de criar)

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

Documentação aqui:

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

Graças rico, vou tomar nota disso. Então aqui é o roteiro para a minha própria solução. Ele requer nenhum terceiro unzip ferramentas.

Inclua o script abaixo no início do arquivo em lotes para criar a função e, em seguida, chamar a função, o comando é ... cscript /B j_unzip.vbs zip_file_name_goes_here.zip

Aqui está o script para adicionar ao topo ...

REM Changing working folder back to current directory for Vista & 7 compatibility
%~d0
CD %~dp0
REM Folder changed

REM This script upzip's files...

    > j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO ' UnZip a file script
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO ' It's a mess, I know!!!
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO ' Dim ArgObj, var1, var2
    >> j_unzip.vbs ECHO Set ArgObj = WScript.Arguments
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO If (Wscript.Arguments.Count ^> 0) Then
    >> 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 If var1 = "" then
    >> j_unzip.vbs ECHO. strFileZIP = "example.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 'The location of the zip file.
    >> j_unzip.vbs ECHO REM Set WshShell = CreateObject("Wscript.Shell")
    >> j_unzip.vbs ECHO 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 'The folder the contents should be extracted to.
    >> j_unzip.vbs ECHO outFolder = sCurPath ^& "\"
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO. WScript.Echo ( "Extracting file " ^& strFileZIP)
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Set objShell = CreateObject( "Shell.Application" )
    >> j_unzip.vbs ECHO Set objSource = objShell.NameSpace(strZipFile).Items()
    >> j_unzip.vbs ECHO Set 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 ( "Extracted." )
    >> j_unzip.vbs ECHO.

Há um artigo em chegar ao built-in manipulação de arquivos do Windows .ZIP com o VBScript aqui:

https: //www.aspfree. com / c / a / Windows-Scripting / comprimido-pastas-em-WSH /

(a última sinopse código lida com a extração)

Grab um executável de info-zip .

Info-ZIP suportes hardware de microcomputadores todo o caminho até supercomputadores Cray, que funcionam em quase todas as versões do Unix, VMS, OS / 2, Windows 9x / NT / etc. (aka 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). Há também alguns (de idade) suporte para LynxOS, TOPS-20, AOS / VS e Novell NLMs. 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.

Originalmente ZIP arquivos foram criados com o software de linha de comando MS-DOS a partir PKWare, os dois programas foram PKZIP.EXE e PKUNZIP.EXE. Eu acho que você ainda pode baixar PKUNZIP no local PKWare aqui:

http://www.pkware.com/software-pkzip/dos-compression

A linha de comando real poderia ser algo como isto:

C:\>pkunzip c:\myzipfile.zip c:\extracttothisfolder\

Copie o código abaixo para um arquivo de lote e executar. Abaixo requer Winzip para ser instalado / acessível a partir de sua máquina. Faça variáveis ??das alterações 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top