如何使用cmd解压缩文件?

Che*_*ker 40 windows zip command-line

我想制作一个可以压缩或解压缩文件的 BAT 文件。对于压缩文件,我发现了这个问题: 您能否仅使用 Windows 的内置压缩文件功能从命令提示符压缩文件?

那里给出的答案很好,对我有用,但我找不到有关如何解压缩文件的任何信息。就像在链接中一样,我不能假设任何第三方工具(winRAR 除外)。

预先感谢并为英语错误感到抱歉

ven*_*mus 48

在 Windows 10 build 17063 或更高版本上,您可以使用tar.exe(类似于 *nix 之一)。这也可以在 nanoserver docker 容器中使用

C:\> tar -xf archive.zip
Run Code Online (Sandbox Code Playgroud)

  • 幸运的是,它是`bsdtar`。因为`.zip` 不是GZip (`-z`)。 (4认同)
  • 它与 .gz 和 .zip 配合良好 (2认同)
  • 是的。因为它忽略了不正确的 `-z` 参数并且总是使用自动检测。 (2认同)
  • 请小心这一点,因为它会在没有任何指示的情况下覆盖现有文件。 `-k` 显然可以用来不覆盖,但还没有尝试过。 (另请注意,“tar --help”比“tar /?”有更详细的帮助) (2认同)

小智 37

如果您有 Windows 10,则可以使用更短的 Powershell 等效项

Expand-Archive -Force C:\path\to\archive.zip C:\where\to\extract\to
Run Code Online (Sandbox Code Playgroud)

  • 旧的 Windows 版本怎么样? (2认同)

Raj*_*nha 14

此批处理文件代码将帮助您解压缩文件。

@echo off
setlocal
cd /d %~dp0
Call :UnZipFile "C:\Temp\" "c:\FolderName\batch.zip"
exit /b

:UnZipFile <ExtractTo> <newzipfile>
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs%  echo Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% echo If NOT fso.FolderExists(%1) Then
>>%vbs% echo fso.CreateFolder(%1)
>>%vbs% echo End If
>>%vbs% echo set objShell = CreateObject("Shell.Application")
>>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% echo Set fso = Nothing
>>%vbs% echo Set objShell = Nothing
cscript //nologo %vbs%
if exist %vbs% del /f /q %vbs%
Run Code Online (Sandbox Code Playgroud)

NB C:\Temp 是存储解压 (UnZip) 文件的文件夹。

并且,c:\FolderName\batch.zip 是源路径(存储 Zip 文件的位置)。

请根据您的需要更改完整文件路径(驱动器、文件夹和 Zip 文件名)。


np8*_*np8 9

如果您有 Windows 10(和 powershell),但仍想从.bat/ .cmd-file (cmd.exe) 中解压缩,您可以使用

powershell -command "Expand-Archive -Force '%~dp0my_zip_file.zip' '%~dp0'"
Run Code Online (Sandbox Code Playgroud)

其中my_zip_file.zip被该文件以解压缩并%~dp0指向相同的文件夹是在.bat/ .cmd-file是(改变文件夹,如果需要的话)。

  • 问题中没有提到它需要在纳米容器中运行。对我来说非常有用的答案 (2认同)

归档时间:

查看次数:

218051 次

最近记录:

4 年,6 月 前