如何使用命令行解压文件?

我可以通过命令行解压缩文件吗? 最好使用开源/免费工具。

你可以使用:

http://membrane.com/synapse/library/pkunzip.html

要么

7zip: http ://www.7-zip.org/download.html

免费字节zip:http://www.freebyte.com/fbzip/

或者infozip: http ://infozip.sourceforge.net/

如果您的PC上已经有了java,并且bin目录在您的path中(在大多数情况下),您可以使用命令行:

jar xf test.zip 

或者如果不在你的path中:

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

这里提供了一套完整的jar工具选项。

例子:

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

首先,使用vbscript编写一个解压缩实用程序来触发Windows中的本地解压缩function。 然后在你的batch file中输出脚本,然后调用它。 那就像独立一样好。 我已经做了很多任务。 这样,它不需要第三方应用程序,只需要一个batch file即可完成所有工作。

我在我的博客上举例说明如何使用batch file解压缩文件 :

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

像这样使用它:

 cscript //B j_unzip.vbs zip_file_name_goes_here.zip 

7-Zip ,它是开源的,免费的,支持多种格式。

 7z.exe x myarchive.zip 

正如其他人所暗示的,7-Zip非常棒。

注意:我要压缩然后解压缩一个文件。 解压到底。

我的贡献:

得到

7-Zip命令行版本

当前url

http://www.7-zip.org/download.html

语法?

您可以将以下内容放入.bat文件中

 "C:\Program Files\7-Zip\7z.exe" a MySuperCoolZipFile.zip "C:\MyFiles\*.jpg" -pmypassword -r -w"C:\MyFiles\" -mem=AES256 

我已经展示了几个选项。

-r是recursion的。 通常你想要的zipfunction。

一个是“档案”。 这是输出压缩文件的名称。

-p是一个密码(可选)

-w是源代码目录。 这将正确地将您的文件嵌套在zip文件中,而不需要额外的文件夹信息。

-mem是encryption强度。

还有其他的。 但是,以上将让你运行。

注意:通过Windows资源pipe理器查看文件时,添encryption码会使zip文件不友好。 客户端可能需要他们自己的7-zip(或者winzip或其他)副本来查看文件的内容。

编辑::::::::::: :(只是额外的东西)。

有一个“命令行”版本可能更适合这个: http : //www.7-zip.org/download.html

(目前(写作时)直接链接) http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7za920.zip/download

所以zip命令将是(使用7 zip工具的命令行版本)。

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

现在解压缩部分 :(解压刚创build的文件)

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

文档在这里:

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

感谢Rich,我会注意到这一点。 所以这里是我自己的解决scheme的脚本。 它不需要第三方解压缩工具。

包括下面的脚本在batch file的开始创build函数,然后调用函数,命令是… cscript /B j_unzip.vbs zip_file_name_goes_here.zip

这是脚本添加到顶端…

 REM将工作文件夹更改回当前目录以获得Vista和7的兼容性
 %〜D0
 CD%〜dp0
 REM文件夹已更改

 REM这个脚本上传的文件...

     > j_unzip.vbs ECHO'
     >> j_unzip.vbs ECHO'解压文件脚本
     >> j_unzip.vbs ECHO'
     >> j_unzip.vbs ECHO'这是一个混乱,我知道!
     >> j_unzip.vbs ECHO'
     >> j_unzip.vbs ECHO。
     >> j_unzip.vbs ECHO'Dim ArgObj,var1,var2
     >> j_unzip.vbs ECHO设置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如果var1 =“”那么
     >> 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'压缩文件的位置。
     >> 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'内容应该被提取到的文件夹。
     >> j_unzip.vbs ECHO outFolder = sCurPath ^&“\”
     >> j_unzip.vbs ECHO。
     >> j_unzip.vbs ECHO。  WScript.Echo(“提取文件”^&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(“提取”)
     >> j_unzip.vbs ECHO。

有一篇关于如何使用VBscript处理内置Windows .ZIP文件的文章:

http://www.aspfree.com/c/a/Windows-Scripting/Compressed-Folders-in-WSH/3/

(最后一个代码blurb处理提取)

从info-zip获取可执行文件。

Info-ZIP支持从微型计算机到Cray超级计算机的硬件,几乎可以运行在所有版本的Unix,VMS,OS / 2,Windows 9x / NT /等。 (又名Win32),Windows 3.x,Windows CE,MS-DOS,AmigaDOS,Atari TOS,Acorn RISC OS,BeOS,Mac OS,SMS / QDOS,MVS和OS / 390 OE,VM / CMS,FlexOS,Tandem NSK和Human68K(日文)。 LynxOS,TOPS-20,AOS / VS和Novell NLM也有一些(旧的)支持。 共享库(DLL)可用于Unix,OS / 2,Win32和Win16,graphics界面可用于Win32,Win16,WinCE和Mac OS。

将以下代码复制到batch file并执行。 以下要求您的机器安装/访问Winzip。 根据需要改变variables。

 @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 

最初ZIP文件是使用来自PKWare的MS-DOS命令行软件创build的,两个程序是PKZIP.EXE和PKUNZIP.EXE。 我认为你仍然可以在这里的PKWare站点下载PKUNZIP:

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

实际的命令行可能如下所示:

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