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

时间:2013-04-05 20:53:00

标签: windows compression cmd cab

我决定使用makecab.exe来满足我在应用程序中创建cab文件的要求。 http://msdn.microsoft.com/en-us/library/bb417343.aspx#microsoftmakecabusersguide

我需要按照给定的路径存储文件,无论是相对的还是绝对的内部cab,并保留原始路径的提取文件。所以我将使用指令文件并将该输入提供给makecab命令。

windows command promt zip/compress directory

但是cab输出存储在Disk1 \ 1.cab。

文件夹中

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

此外,是否可以在第二轮makecab命令中将更多文件附加到现有的cab文件中?

2 个答案:

答案 0 :(得分:4)

终于找到了解决方案。

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

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

来自Microsoft MakeCAB User's Guide

的说明
  

<强> DiskDirectoryTemplate =模板

     

设置输出目录名称模板。为其创建一个目录   布局的每个磁盘。

     

默认值:.Set DiskDirectoryTemplate = DISK *;默认为DISK1,DISK2,   等。

     

当MakeCAB处理指令文件时,它将创建一个或多个   磁盘“图像”。但是,不是使用某些特定的磁盘格式,   MakeCAB只为每个磁盘创建一个子目录并放置   适当目录中每个磁盘的文件。如果存在*   这个变量,然后用磁盘号替换。如果没有*   指定后,所有文件都放在指定的单个目录中   通过这个变量。

     

仅当不存在变量DiskDirectoryn时才使用此变量   disk n。

     

示例:

.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
     

CabinetNameTemplate =模板

     

设置文件柜文件名模板。

     

默认值:.Set CabinetNameTemplate=*.CAB ; 1.CAB, 2.CAB, ...

     

此模板用于构造每个文件柜的文件名。 *   在此模板中,将由机柜编号(1,2等)替换。这个   仅当cabinet没有变量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

答案 1 :(得分:1)

如果您确切知道源文件的存在位置,则可以从目录生成文件列表:

dir C:\FolderName /s /b /a-d > c:\temp\files.txt

然后使用files.txt文件创建cab文件。

makecab /d CabinetName1=test.cab /D DiskDirectoryTemplate=C:\temp /f c:\temp\files.txt

上面的命令将使用之前生成的文件列表在C:\ Temp文件夹中生成test.cab文件。

其他有用的参考: Microsoft Cabinet Reference.makecab.exe details.