我最近也做过类似的事情。但我使用了一个名为DDFGenerator的外部工具。它是免费和小的,它可以正确地处理长文件名。
要使用makecab.exe压缩结构化文件夹和文件,DDF文件是必须的。我没有使用您引用的答案中提到的批处理脚本,而是使用DDFGenerator实现了相同的目标。
DDFGenerator on CodePlex
假设您要“压缩”的文件夹位于C:\MyFolder\MyData,使用以下命令在C:\MyFolder中生成一个名为"solution.ddf“的DDF文件:
代码语言:javascript运行复制DDFGenerator "C:\MyFolder"请注意,DDFGenerator.exe会迭代您提供的文件夹“下”的文件,因此要压缩C:\MyFolder\ MyData,您应该将" C:\MyFolder“传递给它,并确保MyData是C:\MyFolder中的唯一项。
在生成solution.ddf之后,需要进行一些小的调整。只需使用您喜欢的任何文本编辑器打开"solution.ddf“,并进行以下更改:
替换这两行(在最开始):
代码语言:javascript运行复制.Set DiskDirectoryTemplate=CDROM
.Set CompressionType=MSZIP目标为:
代码语言:javascript运行复制.Set CabinetName1={YourCabName}.cab
.Set CompressionType=LZX
.Set CabinetFileCountThreshold=0
.Set FolderFileCountThreshold=0
.Set FolderSizeThreshold=0
.Set MaxCabinetSize=0
.Set MaxDiskFileCount=0
.Set MaxDiskSize=0(将{YourCabName}替换为您需要的任何内容)这些更改可确保不会拆分,并具有更好的压缩比。
然后,在C:\MyFolder中运行makecab命令以构建cab:
代码语言:javascript运行复制makecab.exe /F solution.ddf完成后,{YourCabName}.cab将位于C:\MyFolder\disk1下。只需使用它并删除已生成的其他文件。
要在当前路径下“解压缩”cab,请使用命令:
代码语言:javascript运行复制expand {YourCabName}.cab /F:* .