使用MakeCab.exe和.ddf文件(即使用指令文件)如何指定目标cab文件名?

Vis*_*ath 4 windows compression cmd cab

我决定根据makecab.exe需要在应用程序中创建cab文件。 http://msdn.microsoft.com/zh-CN/library/bb417343.aspx#microsoftmakecabusersguide

而且我需要按照给定的路径存储文件(无论是相对的还是绝对的),并提取保留原始路径的文件。因此,我将为此使用指令文件,并将该输入提供给makecab命令。

Windows命令promt zip / compress目录

但是cab输出存储在文件夹Disk1 \ 1.cab中。

请帮助我知道如何指定所需的出租车文件名作为目的地(我将从用户输入中获取出租车文件名)?

另外,是否可以在第二次makecab命令运行中将更多文件追加到现有的cab文件中?

Vis*_*ath 5

终于找到了解决方案。

您可以在指令文件中设置以下两个变量,这些变量将标识目标路径和cab文件的名称:

DiskDirectoryTemplate=template[输出目录名称模板;*由磁盘号代替
CabinetNameTemplate=template [柜子文件名模板;*由柜号代替]

从说明微软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
Run Code Online (Sandbox Code Playgroud)

CabinetNameTemplate =模板

设置机柜文件名模板。

默认: .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.
Run Code Online (Sandbox Code Playgroud)

此外,当文件在驾驶室中分割时(如果机柜大小超出其限制大小),则还可以使用变量CabinetName n设置后续的机柜文件名:

CabinetNamen=filename [内阁号n的内阁文件名]

CabinetNamen =文件名

指定机柜的机柜文件名。

默认值:; 默认情况下,这些变量均未定义

如果未为特定磁盘定义此变量,则MakeCAB将使用CabinetNameTemplate构造机柜名称。

例:

.Set CabinetName2=test2.cab
Run Code Online (Sandbox Code Playgroud)