终于找到了解决办法。
您可以在指令文件中设置以下两个变量,这些变量将识别 cab 文件的目标路径和名称:
DiskDirectoryTemplate=template
[输出目录名模板;* 替换为磁盘号]
CabinetNameTemplate=template
[机柜文件名模板;* 替换为柜号]
Microsoft MakeCAB 用户指南中的描述
DiskDirectoryTemplate =模板
设置输出目录名称模板。为布局的每个磁盘创建一个目录。
默认值: .Set DiskDirectoryTemplate=DISK* ; 默认为 DISK1、DISK2 等。
当 MakeCAB 处理一个指令文件时,它将创建一个或多个磁盘“映像”。然而,MakeCAB 并没有使用某种特定的磁盘格式,而是简单地为每个磁盘创建一个子目录,并将每个磁盘的文件放在适当的目录中。如果*
此变量中存在 a,则将其替换为磁盘号。如果未*
指定,则所有文件都放置在此变量指定的单个目录中。
仅当磁盘 n 不存在变量 DiskDirectoryn 时才使用此变量。
例子:
.Set DiskDirectoryTemplate=C:\EXCEL6\DISK* ; Put files in separate dirs
.Set DiskDirectoryTemplate=C:\EXCEL6 ; Put all files in C:\EXCEL6
.Set DiskDirectoryTemplate= ; Put all files in current dir
橱柜名称模板 = 模板
设置cabinet 文件名模板。
默认:.Set CabinetNameTemplate=*.CAB ; 1.CAB, 2.CAB, ...
该模板用于构建每个文件柜的文件名。此*
模板中的 替换为机柜编号(1、2 等)。仅当机柜 n 不存在变量 CabinetNamen 时才使用此变量。
注意:确保扩展的文件柜名称不超过文件系统的限制!例如,如果您使用“CABINET*.CAB”,而 MakeCAB 必须创建 10 个或更多的文件柜,那么您的文件柜名称将类似于 CABINET10.CAB,即 9.3,它在 FAT 文件系统中是无效名称。不幸的是,MakeCAB 在创建 9 个机柜之前不会检测到这一点!
例子:
.Set CabinetNameTemplate=EXCEL*.DIA ; EXCEL1.DIA, EXCEL2.DIA, etc.
.Set CabinetNameTemplate=*. ; 1, 2, 3, etc.
此外,当文件在 cab 中拆分时(以防文件柜大小超过其限制大小),您也可以使用变量 CabinetName n设置后续文件柜文件名:
CabinetNamen=filename
[机柜编号 n 的机柜文件名]
CabinetNamen =文件名
指定文件柜的文件名。
默认: ; 默认情况下,这些变量均未定义
如果未为特定磁盘定义此变量,则 MakeCAB 使用 CabinetNameTemplate 构造机柜名称。
例子:
.Set CabinetName2=test2.cab