0

我看到这篇文章有一个很好的方法

如何在不使用任何外部工具的情况下使用批处理文件压缩 (/ zip ) 和解压缩 (/ unzip ) 文件和文件夹?

使用 makecab 压缩文件夹。上述脚本的一个问题是它无法处理长文件名(带有长扩展名)。Fox 示例,如果我有一个文件名为 somelongfilename.extension 的文件,在我压缩和解压缩后,文件名将是 SOMELO~1.EXT。任何人都可以指导我解决它的方法吗?

4

1 回答 1

0

我最近也做过类似的事情。但我使用了一个名为 DDFGenerator 的外部工具。它免费且小巧,并且可以正确处理长文件名。

要使用 makecab.exe 压缩结构化文件夹和文件,DDF 文件是必须的。我没有使用您引用的答案中提到的批处理脚本,而是使用 DDFGenerator 来实现相同的目标。

CodePlex 上的 DDFGenerator

假设您要“压缩”的文件夹位于 C:\MyFolder\MyData ,使用此命令在 C:\MyFolder 生成名为“solution.ddf”的 DDF 文件:

DDFGenerator "C:\MyFolder"

请注意,DDFGenerator.exe 会迭代您提供的文件夹“下”的文件,因此要压缩 C:\MyFolder\MyData,您应该将“C:\MyFolder”传递给它,并确保 MyData 是 C:\MyFolder 中的唯一项目。

生成 solution.ddf 后,需要进行一些小调整。只需使用您喜欢的任何文本编辑器打开“solution.ddf”并进行以下更改:

替换这两行(最开始):

.Set DiskDirectoryTemplate=CDROM
.Set CompressionType=MSZIP

成为:

.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:

makecab.exe /F solution.ddf

完成后,{YourCabName}.cab 将位于 C:\MyFolder\disk1 下。只需将其删除并删除已生成的其他文件。

要在当前路径“解压缩”出租车,请使用命令:

expand {YourCabName}.cab /F:* .
于 2017-09-06T07:52:41.410 回答