中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-06 20:29
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 支持多文件、文件夹拖放的CAB压缩 查看 1,419 回复 8
楼 主 支持多文件、文件夹拖放的CAB压缩 发表于 2007-07-27 11:37 ·  中国 福建 厦门 电信
高级用户
★★★
积分 741
发帖 366
注册 2007-07-25 19:11
19年会员
UID 94024
性别 男
状态 离线
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::运行环境2000、xp或更高 ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@Echo Off
Title CAB文件夹最大压缩工具
Set Prestr=MAKECAB /v3 /D CompressionType=LZX /D CompressionMemory=21 /D MaxDiskSize=CDROM /D Cabinet=On /D Compress=On
:begin
Set fullname=%~1
Set dirpath=%~dp1
Set srcname=%~n1
if exist "%fullname%\" goto is_dir
:is_file
Set Cmdstr=%Prestr% "%fullname%" "%dirpath%%srcname%.CAB"
%Cmdstr%
Set Cmdstr=
shift
Set tmpstr=%1
if not %tmpstr%=="" goto begin
goto end
:is_dir
Set Cmdstr=%Prestr% /D FolderSizeThreshold=5000000 /D DiskDirectoryTemplate="%dirpath%." /D CabinetNameTemplate="%srcname%.CAB"
Set Tempfile=%TEMP%\mkcabtmp.tmp
If Exist "%Tempfile%" Del "%Tempfile%" >NUL
SETLOCAL ENABLEDELAYEDEXPANSION
For /f "delims=" %%i In ('dir "%fullname%" /s /b /a-d') Do (
Set subname=%%i
Set "subname=!subname:%fullname%\=!"
Echo "%%i" "!subname!">>%Tempfile%
)
ENDLOCAL
%Cmdstr% /F %Tempfile%
Del /F /S /Q "%Tempfile%" SETUP.INF SETUP.RPT >NUL
Set Tempfile=
Set Cmdstr=
shift
Set tmpstr=%1
if not %tmpstr%=="" goto begin
:end
Set tmpstr=
Set srcname=
Set dirpath=
Set fullname=
Set Prestr=

[[i] Last edited by netwinxp on 2007-7-27 at 11:41 AM [/i]]
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
wudixin96 +5 2007-07-27 11:40
afeichai +2 2007-09-19 15:01
附件
maxmkcab.CAB (687 bytes, 下载次数: 109)
2 发表于 2007-07-27 11:46 ·  中国 福建 厦门 电信
高级用户
★★★
积分 741
发帖 366
注册 2007-07-25 19:11
19年会员
UID 94024
性别 男
状态 离线
压缩率比WINRAR最大压缩略高,每个对象比压缩成同名的CAB文件(原文件仍保留),大家用过有何BUG请反馈,谢谢先。
3 发表于 2007-07-27 11:48 ·  中国 浙江 杭州 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
如果楼主用过微软原版光盘上的压缩工具,就该知道那才是压缩率高的。
4 发表于 2007-07-27 16:05 ·  中国 福建 厦门 电信
高级用户
★★★
积分 741
发帖 366
注册 2007-07-25 19:11
19年会员
UID 94024
性别 男
状态 离线
这个本身就是调用微软的CAB制作工具(只不过makecab操作文件夹繁琐),并采用最大化压缩,没有理由会比它低。我们以office2000sch原装光盘里面的ofifice1.cab来做测试,原压缩包110M(115,385,377)内含252个文件,解压后210M(220,265,737)共252个文件,重新用上面的压缩后105M(110,611,933)内含252个文件,经解压进行文件对比,完全重合,用新压缩包替换老压缩包安装过程完全没问题。新包比原包少了5M,也就是说微软的原装包并不全是最大压缩。

[ Last edited by netwinxp on 2007-7-27 at 04:09 PM ]
5 发表于 2007-09-19 00:32 ·  中国 福建 厦门 电信
初级用户
积分 97
发帖 45
注册 2007-01-31 06:02
19年会员
UID 78190
性别 男
状态 离线
LZ的程序确实能批量打包,不过打包后的路径和文件名加在一起了
如:
D:外置程序PE_OUTERPART新建文件夹DRIVERS_NET3COM3c940_3c2000EL2000x.inf

其中的斜杠完全丢失

期待下个版本
6 发表于 2007-09-19 01:34 ·  中国 上海 东方有线
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
我靠,好东西

简单的测试了下:压缩大小是比WinRAR小,比7z的大

原文件111KB
WinRAR 19.1KB (采用了最大压缩)
你的作品 14.6KB\14KB...
7z 13.1KB\12.1KB (采用最大压缩)

[ Last edited by tireless on 2007-9-18 at 05:46 AM ]
7 发表于 2007-09-19 14:59 ·  中国 陕西 安康 电信
初级用户
★★
积分 171
发帖 78
注册 2006-11-22 11:26
19年会员
UID 71373
性别 男
状态 离线
这个不错,在无忧看过了
8 发表于 2007-12-14 20:33 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 906
发帖 346
注册 2006-07-10 09:58
20年会员
UID 58334
性别 男
状态 离线
楼主再写个解压的批处理啊
9 发表于 2007-12-15 09:47 ·  中国 江苏 扬州 电信
高级用户
★★★
积分 620
发帖 329
注册 2007-12-05 15:34
18年会员
UID 104754
性别 男
状态 离线
好加密的,就更好了.

但此工具,只好,被在同一磁盘下引用??????

[ Last edited by cad55 on 2007-12-15 at 10:58 AM ]
论坛跳转: