无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 7262|回复: 6
打印 上一主题 下一主题

请问怎样使用makecab.exe将若干文件打包成一个cab!

[复制链接]
跳转到指定楼层
1#
发表于 2006-11-2 17:51:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
老毛桃求救啊!

好象baidu上搜索到一个你的文章的!

不过写的不很详细啊!

有没有办法呢?

p.s.论坛要是有搜索功能就好了


WZ原创 | 批量文件CAB打包工具分享

WZ原创 | 批量文件CAB打包工具分享

在光盘启动区看到过一些网友说需要将一些文件打包成 CAB 格式,对于单个文件,makecab 命令即可搞定。但是若要将批量文件打包成一个 CAB 格式的文件,就不大容易了,需要设置很多参数,甚至要借助脚本才能方便地执行。

而且,我们平常运行 makecab 的时候,其压缩效果并不让人满意,需要加上  /D CompressionType=LZX /D CompressionMemory=21 这两个参数才可以达到最高的压缩率。老毛桃这里做了个脚本,默认使用最大压缩率,可以将批量文件压缩成一个压缩包,也可以将批量文件分别压缩成一个个的小压缩包,也可以选择压缩单个的文件。

================================================
要测试压缩效果,可以找一个几十 MB 的文件,先使用 Makecab 文件名 的方式压缩一下,再使用老毛桃的方法对比一下就知道了。

加上  /D CompressionType=LZX /D CompressionMemory=21 这两个参数后的压缩比,是非常高的,已经超过了 WinZIP 的最高压缩比,比 WinRAR 的最高压缩比仅仅查一点点而已,我测试过,大概相差不到 1%。
================================================

PS:想用WZ原创SOFT又没WZ的ID的朋友顶顶…:q58;…

[ 本帖最后由 暖锋吹过 于 2006-11-2 05:52 PM 编辑 ]
2#
 楼主| 发表于 2006-11-2 17:55:03 | 只看该作者
我使用的是一个explorer程序!不知道做出来的会不会有错误,到时候解不出来!

最开始不知道用rar压缩改扩展名来者,结果不能用!
回复

使用道具 举报

3#
发表于 2006-11-2 18:15:15 | 只看该作者
将以下的文本保存成cab.cmd,然后执行该批命令文件来压缩,用法看批命令里面的

rem 代码开始
@echo off>nul
rem 使用方法:
rem cab 源目录 输出目录 目标文件名
rem %1 源目录 %2输出目录 %3目标文件名
if "%1"=="" goto Use
if "%2"=="" goto Use
if "%3"=="" goto Use
if NOT EXIST %2 MD %2
@echo .Set CabinetNameTemplate=%2\%3>%temp%\tmp.lst
@echo .Set CompressionType=LZX>>%temp%\tmp.lst
@echo .Set CompressionMemory=21>>%temp%\tmp.lst
@echo .Set InfFileName=%2\setup.inf>>%temp%\tmp.lst
@echo .Set RptFileName=%2\setup.rpt>>%temp%\tmp.lst
@echo .Set MaxDiskSize=CDROM>>%temp%\tmp.lst
@echo .Set ReservePerCabinetSize=6144>>%temp%\tmp.lst
@echo .Set InfCabinetLineFormat=*cab#*=Application Source Media,*cabfile*,0 >>%temp%\tmp.lst
@echo .Set Compress=on>>%temp%\tmp.lst
@echo .Set CompressionMemory=21>>%temp%\tmp.lst
@echo .Set DiskDirectoryTemplate=>>%temp%\tmp.lst
@echo .Set Cabinet=ON>>%temp%\tmp.lst
@echo .Set MaxCabinetSize=999999999>>%temp%\tmp.lst
@echo .Set InfDiskHeader=>>%temp%\tmp.lst
@echo .Set InfDiskLineFormat=>>%temp%\tmp.lst
@echo .Set InfCabinetHeader=[SourceDisksNames]>>%temp%\tmp.lst
@echo .Set InfFileHeader=>>%temp%\tmp.lst
@echo .Set InfFileHeader1=[SourceDisksFiles]>>%temp%\tmp.lst
@echo .Set InfFileLineFormat=*file*=*cab#*,,*size*,*csum*>>%temp%\tmp.lst
for %%a in (%1\*.*) do @echo %%a>>%temp%\tmp.lst
makecab /f %temp%\tmp.lst

goto ext

:use
cls
@echo.
echo.
echo 使用方法:
@echo cab 源目录 输出目录 目标文件名
@echo.

:ext
@echo on
rem 代码结束
回复

使用道具 举报

4#
发表于 2006-11-2 18:23:13 | 只看该作者
回复

使用道具 举报

5#
 楼主| 发表于 2006-11-2 18:29:20 | 只看该作者
感谢!
回复

使用道具 举报

6#
发表于 2006-11-5 13:27:45 | 只看该作者
iexpress

用这个
回复

使用道具 举报

7#
发表于 2006-11-9 16:44:31 | 只看该作者
我的CAB压出来的包比RAR还要小啊,原文件9M,CAB压完了7.1M,RAR压完了7.4M
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-9-12 20:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表