我正在尝试为Windows 7 x64创建一个.bat脚本来创建一个文件夹,将文件解压缩到该文件夹中,而不必使用其他插件,如7zip或解压缩。一直在搜索,似乎Windows没有内置设备允许在命令中轻松解压缩。我可以在没有附加插件的情况下解压/扩展文件吗?
答案 0 :(得分:45)
试试这个:
@echo off
setlocal
cd /d %~dp0
Call :UnZipFile "C:\Temp\" "c:\path\to\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%
<强>修订强>
让它在每个zip文件上执行解压缩,为每次使用创建一个文件夹:
@echo off
setlocal
cd /d %~dp0
for %%a in (*.zip) do (
Call :UnZipFile "C:\Temp\%%~na\" "c:\path\to\%%~nxa"
)
exit /b
如果您不希望它为每个zip创建一个文件夹,请更改
Call :UnZipFile "C:\Temp\%%~na\" "c:\path\to\%%~nxa"
来
Call :UnZipFile "C:\Temp\" "c:\path\to\%%~nxa"
答案 1 :(得分:6)
以下是使用PowerShell的快速简单的解决方案:
powershell.exe -nologo -noprofile -command "& { $shell = New-Object -COM Shell.Application; $target = $shell.NameSpace('C:\extractToThisDirectory'); $zip = $shell.NameSpace('C:\extractThis.zip'); $target.CopyHere($zip.Items(), 16); }"
这使用Explorer的内置提取功能,还将显示典型的提取进度窗口。第二个参数16
到CopyHere
会回答所有问题。
答案 2 :(得分:4)
如果您具有PowerShell 5.0或更高版本(已预安装Windows 10和Windows Server 2016):
powershell Expand-Archive your.zip -DestinationPath your_destination
答案 3 :(得分:2)
以下是我对Windows中内置zi / unzip(压缩/解压缩)功能的概述 - How can I compress (/ zip ) and uncompress (/ unzip ) files and folders with batch file without using any external tools?
要解压缩文件,您可以使用此script:
zipjs.bat unzip -source C:\myDir\myZip.zip -destination C:\MyDir -keep yes -force no
答案 4 :(得分:1)
解决此问题的另一种方法是使用winzip之类的东西创建自解压可执行文件(.exe),并将其用作安装向量而不是zip文件。同样,您可以使用NSIS创建可执行安装程序并使用它而不是zip。