如何在不使用任何外部工具的情况下用批处理文件压缩(/zip)和解压缩(/解压缩)文件和文件夹?
我知道这里问了很多类似的问题,但我对答案并不完全满意(甚至对问题也不满意)。
其主要目标是兼容性-它应该适用于尽可能广泛的Windows机器(包括XP、Vista、Win 2003),这些机器仍然拥有大约20%的Windows份额,生成的文件应该可以在Unix/Mac机器上使用(因此最好采用标准存档/压缩格式)。
备选方案是:
- 创建一个实现某些zip算法的批处理。很明显,这是可能的-但只对单个文件使用CERTUTIL进行二进制处理(一些机器默认没有CERTUTIL,并且无法在WinXP家庭版上安装)
- 使用
壳类应用
通过WSH。我认为这是最好的选择。它允许压缩整个目录,并且可以在每台windows机器上使用。 马凯卡
尽管压缩不是那么便携,但它在每台Windows机器上都是可用的。像7zip这样的外部程序能够提取.cab内容,但是当文件需要在Unix/Mac上使用时,它就不那么方便了。虽然压缩单个文件非常简单,但是保持目录结构需要付出更多的努力。- 使用.NET框架-不是很好的选择。
GZipStream
但它只允许对单个文件进行压缩。.NET 4.5具有Zip功能,但它在Vista和XP上不受支持。更重要的是,在XP和Win 2003上没有默认安装.NET,但由于.NET 2.0升级到4.0的可能性很大,这是一个相当大的问题。 - Powershell-由于它依赖于.NET,它具有相同的能力,在XP、2003和Vista上默认情况下没有安装,所以我将跳过它。