在Windows中,你可以压缩一些文件

右键单击→发送到→压缩(压缩)文件夹

双击.zip文件解压缩并解压缩文件。

是否有一种方法可以从脚本(.bat文件)应用这些功能,而不需要安装任何第三方软件?


当前回答

为了扩展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。

其他回答

我对所有这些解决方案都有疑问。

它们并不完全相同,当从相同的源文件夹生成时,它们都创建的文件与RMB—> send to—>压缩(压缩)文件夹相比有轻微的大小差异。我有过的最接近的大小差异是300kb的差异(脚本>手册),使用:

powershell Compress-Archive -Path C:\sourceFolder -CompressionLevel Fastest -DestinationPath C:\destinationArchive.zip

(注意-CompressionLevel。有三个可能的值:最快,无压缩和最佳,(默认值:最佳))

我想做一个。bat文件,它可以自动将我正在使用的WordPress插件文件夹压缩成。zip文件,这样我就可以把它上传到WordPress站点并测试插件。

但出于某种原因,它不能与任何这些自动压缩,但它可以与手动人民币压缩,我发现真的很奇怪。

脚本生成的。zip文件实际上破坏了WordPress插件,使其无法激活,也不能从WordPress内部删除。我必须SSH到服务器的“后台”,手动删除上传的插件文件。而手动生成的人民币文件正常工作。

这个对我来说很管用(在2021年):

tar -xf test.zip

这将解压缩当前目录中的测试。

可以使用此命令压缩整个文件夹及其子文件夹

/c /s " c:\Temp\my_folder" /I /Q

来解压

compact /u /s:"C:\Temp\my_folder" /I /Q

c代表压缩,u代表解压

你可以在BAT文件中使用VBScript脚本。这段代码在相对PATH上工作。

不需要任何第三方工具或依赖项。只需设置SOURCEDIR和OUTPUTZIP。

文件名:ZipUp.bat

echo Set fso = CreateObject("Scripting.FileSystemObject") > _zipup.vbs
echo InputFolder = fso.GetAbsolutePathName(WScript.Arguments.Item(0)) >> _zipup.vbs
echo ZipFile = fso.GetAbsolutePathName(WScript.Arguments.Item(1)) >> _zipup.vbs

' Create empty ZIP file.
echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, vbNullChar) >> _zipup.vbs

echo Set objShell = CreateObject("Shell.Application") >> _zipup.vbs
echo Set source = objShell.NameSpace(InputFolder).Items >> _zipup.vbs
echo objShell.NameSpace(ZipFile).CopyHere(source) >> _zipup.vbs

echo ' Keep script waiting until compression is done
echo Do Until objShell.NameSpace( ZipFile ).Items.Count = objShell.NameSpace( InputFolder ).Items.Count >> _zipup.vbs
echo     WScript.Sleep 200 >> _zipup.vbs
echo Loop >> _zipup.vbs

CScript  _zipup.vbs  %SOURCEDIR%  %OUTPUTZIP%

del _zipup.vbs

示例使用

SET SOURCEDIR=C:\Some\Path
SET OUTPUTZIP=C:\Archive.zip
CALL ZipUp

或者,您可以通过替换CScript _zip行来参数化该文件。使用CScript _zip . vbs %SOURCEDIR% %OUTPUTZIP%vbs %1 %2,在这种情况下,通过调用CALL ZipUp C:\Source\Dir C:\Archive.zip可以更容易地调用它。

更新的windows版本包括tar.exe。 Tar.exe可用于CMD或Windows批处理文件中。

//Compress a folder:
tar -caf aa.zip c:\aa