我可以通过命令行解压缩文件吗?最好使用开源/免费工具。
答案 0 :(得分:202)
如果你的PC上已有java,并且bin目录在你的路径中(在大多数情况下),你可以使用命令行:
jar xf test.zip
或者如果不在您的路径中:
C:\Java\jdk1.6.0_03\bin>jar xf test.zip
可用的jar工具的完整选项集here。
示例:
Extract jar file
jar x[v]f jarfile [inputfiles] [-Joption]
jar x[v] [inputfiles] [-Joption]
答案 1 :(得分:45)
您可以使用:
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/
答案 2 :(得分:38)
首先,使用vbscript编写一个解压缩实用程序来触发Windows中的本机解压缩功能。然后从批处理文件中删除脚本,然后调用它。然后它就像独立一样好。我过去做过很多任务。这样就不需要第三方应用程序,只需要一个可以执行所有操作的批处理文件。
我把an example on my blog on how to unzip a file using a 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
答案 3 :(得分:37)
7-Zip,它是开源的,免费的,支持多种格式。
7z.exe x myarchive.zip
答案 4 :(得分:19)
正如其他人所提到的,7-zip很棒。
注意:我要压缩然后解压缩文件。解压缩在底部。
我的贡献:
获取
7-Zip命令行版
当前网址
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是递归的。通常你想要的拉链功能。
a代表“存档”。这是输出zip文件的名称。
-p用于密码(可选)
-w是源目录。这会将您的文件正确嵌套在zip文件中,而无需额外的文件夹信息。
-mem是加密强度。
还有其他人。但是上面的内容会让你跑步。
注意:在通过Windows资源管理器查看文件时,添加密码会使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
现在解压缩部分 :(解压缩您刚刚创建的文件)
"C:\WhereIUnzippedCommandLineStuff\7zipCommandLine\7za.exe" e MySuperCoolZipFile.zip "*.*" -oC:\SomeOtherFolder\MyUnzippedFolder -pmypassword -y -r
此处的文档:
http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract.htm
答案 5 :(得分:10)
感谢Rich,我会注意到这一点。所以这是我自己的解决方案的脚本。它不需要第三方解压缩工具。
在批处理文件的开头包含下面的脚本来创建函数,然后调用该函数,命令是......
cscript /B j_unzip.vbs zip_file_name_goes_here.zip
以下是要添加到顶部的脚本...
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.
答案 6 :(得分:8)
有一篇关于使用VBscript处理内置Windows .ZIP文件的文章:
https://www.aspfree.com/c/a/Windows-Scripting/Compressed-Folders-in-WSH/
(最后一个代码模糊处理提取)
答案 7 :(得分:2)
从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,图形界面可用于Win32,Win16,WinCE和Mac OS。
答案 8 :(得分:2)
最初ZIP文件是用PKWare的MS-DOS命令行软件创建的,两个程序分别是PKZIP.EXE和PKUNZIP.EXE。我想你仍然可以在PKWare网站上下载PKUNZIP:
http://www.pkware.com/software-pkzip/dos-compression
实际的命令行可能如下所示:
C:\>pkunzip c:\myzipfile.zip c:\extracttothisfolder\
答案 9 :(得分:1)
将以下代码复制到批处理文件并执行。下面要求从您的计算机安装/访问Winzip。根据需要改变变量。
@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