在Windows中,你可以压缩一些文件
右键单击→发送到→压缩(压缩)文件夹
双击.zip文件解压缩并解压缩文件。
是否有一种方法可以从脚本(.bat文件)应用这些功能,而不需要安装任何第三方软件?
在Windows中,你可以压缩一些文件
右键单击→发送到→压缩(压缩)文件夹
双击.zip文件解压缩并解压缩文件。
是否有一种方法可以从脚本(.bat文件)应用这些功能,而不需要安装任何第三方软件?
当前回答
我发现了一种方法来解压缩压缩文件与批处理文件:
@echo off
::unziper
set /p zip=zip:
powershell -Command "Expand-Archive %zip%"
echo done
pause
我把这个贴出来,以防有人需要。 你为什么要修改我的答案?
其他回答
这是@PodTech.io提供的答案的更新版本
这个版本在批处理文件中正确转义了所有的vbs代码。 它也被创建为一个子例程,可以从批处理脚本中的任何地方用一行来调用:
:: === Main code:
call :ZipUp "C:\Some\Path" "C:\Archive.zip"
:: === SubRoutines:
:ZipUp
::Arguments: Source_folder, destination_zip
(
echo:Set fso = CreateObject^("Scripting.FileSystemObject"^)
echo:InputFolder = fso.GetAbsolutePathName^(WScript.Arguments.Item^(0^)^)
echo:ZipFile = fso.GetAbsolutePathName^(WScript.Arguments.Item^(1^)^)
echo:
echo:' Create empty ZIP file.
echo:CreateObject^("Scripting.FileSystemObject"^).CreateTextFile^(ZipFile, True^).Write "PK" ^& Chr^(5^) ^& Chr^(6^) ^& String^(18, vbNullChar^)
echo:
echo:Set objShell = CreateObject^("Shell.Application"^)
echo:Set source = objShell.NameSpace^(InputFolder^).Items
echo:objShell.NameSpace^(ZipFile^).CopyHere^(source^)
echo:
echo:' Keep script waiting until compression is done
echo:Do Until objShell.NameSpace^( ZipFile ^).Items.Count = objShell.NameSpace^( InputFolder ^).Items.Count
echo: WScript.Sleep 200
echo:Loop
)>_zipup.vbs
CScript //Nologo _zipup.vbs "%~1" "%~2"
del _zipup.vbs
goto :eof
如果您需要将此作为脚本的一部分,那么最好的方法是使用Java。假设bin目录在你的路径中(在大多数情况下),你可以使用命令行:
jar xf test.zip
如果Java不在你的路径上,直接引用它:
C:\Java\jdk1.6.0_03\bin>jar xf test.zip
为了扩展Steven Penny的PowerShell解决方案,你可以通过调用PowerShell .exe将其合并到一个批处理文件中,就像这样:
powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', 'bar'); }"
正如Ivan Shilo所说,这在PowerShell 2中行不通,它需要PowerShell 3或更高版本和. net Framework 4。
它并不是ZIP文件,但使用Windows工具压缩文件的唯一方法是:
makecab <source> <dest>.cab
减压:
expand <source>.cab <dest>
高级示例(来自ss64.com):
Create a self extracting archive containing movie.mov:
C:\> makecab movie.mov "temp.cab"
C:\> copy /b "%windir%\system32\extrac32.exe"+"temp.cab" "movie.exe"
C:\> del /q /f "temp.cab"
更多信息:makecab,扩展,makecab高级用法
我发现了一种方法来解压缩压缩文件与批处理文件:
@echo off
::unziper
set /p zip=zip:
powershell -Command "Expand-Archive %zip%"
echo done
pause
我把这个贴出来,以防有人需要。 你为什么要修改我的答案?