我正在尝试为Windows 7 x64创build一个.bat脚本来创build一个文件夹,将文件解压缩到该文件夹中,而不必使用额外的插件(如7zip或unzip)。 一直在search,它似乎像Windows没有内置的允许在命令中轻松解压缩。 我可以解压缩/扩展文件没有额外的插件?
尝试这个:
@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"
这里是我关于Windows内置zi / unzip(压缩/解压缩)功能的概述 – 如何在不使用任何外部工具的情况下使用批处理文件压缩(/ zip)和解压缩(/ unzip)文件和文件夹?
要解压文件,你可以使用这个脚本 :
zipjs.bat unzip -source C:\myDir\myZip.zip -destination C:\MyDir -keep yes -force no
解决此问题的另一种方法是使用类似winzip的方式创建自解压可执行文件(.exe),并将其用作安装向量而不是zip文件。 同样,你可以使用NSIS来创建一个可执行的安装程序,并使用它来代替zip。
这是一个使用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); }"
这使用资源管理器的内置提取功能,也将显示典型的提取进度窗口。 CopyHere
的第二个参数16
回答所有问题。