如何使用命令行解压缩文件?[关闭]


164

可以通过命令行使用哪些命令来解压缩文件?
最好是Windows内置的东西或开源/免费工具。


1
快速的Google搜索发现了这一点。可以在Windows中使用(尚不清楚您是要使用Windows还是OS实际上是DOS)。
杰里米(Jeremy)2009年

26
除非您运行的是Windows的真正旧版本(ME或更早版本),否则Windows命令行不是DOS。:)
泰勒·麦克亨利

解压缩文件的最简单方法是使用unzip.exe。示例:unzip.exe source.zip -d target_dir。网址:stahlworks.com/dev/index.php?tool = zipunzip
zappee,

2
带有Powershell5的Windows可以使用Exand-Archive和本地执行此操作Compress-Archive荣誉归功于荣誉。
LosManos '18

1
解压缩[filename] .zip
Amranur Ra​​hman

Answers:


53

您可以使用:

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/


11
列出的第一个URL是真正的16位应用程序,因此在x64操作系统上不起作用。只是抬头。
马克·亨德森

38
如果您使用的是带powershell.exe -NoP -NonI -Command "Expand-Archive '.\file.zip' '.\unziped\'"
Powershell的

@AK_ Windows 8或8.1怎么样?
Frank Vu

2
@AK_您应该做出自己的回答。
BrainStone

221

如果您的PC上已经有Java,并且bin目录位于路径中(大多数情况下),则可以使用命令行:

jar xf test.zip

或者,如果不在您的路径中:

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]

37
一个提示。如果要使用jar,则需要JDK,而不仅仅是JRE。
Qben 2012年

1
很奇怪,m jar实际上可以部分解决问题,因为它可以列出存档中的文件并提取指定的文件,但是,不可能同时提取所有文件...很奇怪
mikus

@mikus:为什么不使用命令<code> jar.exe xvf Compressed.zip </ code>
Xinus 2014年

1
java.io.FileNotFoundException:test.zip(系统找不到指定的文件)
markj 2015年

有没有办法指定目标文件夹?(例如当您选择“提取至”选项时)?
莱昂纳多·阿尔维斯·马查多

41

首先,使用vbscript编写一个解压缩实用程序来触发Windows中的本机解压缩功能。然后从批处理文件中移出脚本,然后调用它。然后就好比独立。过去,我已经完成了许多任务。这样,它不需要第三方应用程序,只需要一个批处理文件即可完成所有工作。

在博客上举了一个有关如何使用批处理文件解压缩文件的示例

' 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
通常认为将代码放入答案中是好事,而链接到代码通常是不好的事,请注意!
Rich Bradshaw

39

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

7z.exe x myarchive.zip

1
如果提取的内容已经存在,并且您希望不提示就覆盖现有内容,请使用“ 7z.exe x -y myarchive.zip”
Bhuta,

22

正如其他人提到的那样,7拉链很棒。

注意:我将先压缩然后解压缩文件。解压缩位于底部。

我的贡献:

得到

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是递归的。通常,您想要的是zip功能。

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

作为“ e”参数的替代方法,还有ax参数。

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

此处的文档:

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


11

谢谢里奇,我会注意这一点。这是我自己的解决方案的脚本。它不需要第三方解压缩工具。

在批处理文件的开头包含以下脚本以创建函数,然后调用该函数,命令是... cscript /B j_unzip.vbs zip_file_name_goes_here.zip

这是要添加到顶部的脚本...

REM将工作文件夹更改回当前目录以实现Vista&7兼容性
%〜d0
CD%〜dp0
REM文件夹已更改

REM此脚本upzip的文件...

    > j_unzip.vbs ECHO'
    >> j_unzip.vbs ECHO'解压缩文件脚本
    >> j_unzip.vbs ECHO'
    >> j_unzip.vbs ECHO'这很烂,我知道!!!
    >> j_unzip.vbs ECHO'
    >> j_unzip.vbs回显。
    >> j_unzip.vbs ECHO'Dim ArgObj,var1,var2
    >> j_unzip.vbs ECHO设置ArgObj = WScript.Arguments
    >> j_unzip.vbs回显。
    >> j_unzip.vbs ECHO如果(Wscript.Arguments.Count ^> 0)然后
    >> j_unzip.vbs回显。var1 = ArgObj(0)
    >> j_unzip.vbs ECHO其他
    >> j_unzip.vbs回显。var1 =“”
    >> j_unzip.vbs回显结束
    >> j_unzip.vbs回显。
    >> j_unzip.vbs ECHO如果var1 =“”则
    >> j_unzip.vbs回显。strFileZIP =“ example.zip”
    >> j_unzip.vbs ECHO其他
    >> j_unzip.vbs回显。strFileZIP = var1
    >> j_unzip.vbs回显结束
    >> j_unzip.vbs回显。
    >> j_unzip.vbs ECHO'压缩文件的位置。
    >> j_unzip.vbs ECHO REM设置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回显。
    >> j_unzip.vbs回显。WScript.Echo(“提取文件” ^&strFileZIP)
    >> j_unzip.vbs回显。
    >> j_unzip.vbs ECHO设置objShell = CreateObject(“ Shell.Application”)
    >> j_unzip.vbs ECHO设置objSource = objShell.NameSpace(strZipFile).Items()
    >> j_unzip.vbs ECHO设置objTarget = objShell.NameSpace(outFolder)
    >> j_unzip.vbs ECHO intOptions = 256
    >> j_unzip.vbs ECHO objTarget.CopyHere objSource,intOptions
    >> j_unzip.vbs回显。
    >> j_unzip.vbs回显。WScript.Echo(“已提取。”)
    >> j_unzip.vbs回显。

2
beautiful :)我用它来下载7zip命令行(其可执行文件已压缩(多么奇怪))
Sebastian

这按预期工作,现在我可以压缩任何文件夹并使用iexpress制作exe文件,并使用此文件解压缩。在Windows 10中也可以使用吗?
基兰·库玛



3

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

Info-ZIP支持从微型计算机一直到Cray超级计算机的硬件,这些硬件几乎可以在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和OS / 390 OE,VM / CMS,FlexOS,串联NSK和Human68K(日语)。对LynxOS,TOPS-20,AOS / VS和Novell NLM也有一些(旧)支持。共享库(DLL)可用于Unix,OS / 2,Win32和Win16,图形界面可用于Win32,Win16,WinCE和Mac OS。


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.