无忧启动论坛

标题: 【3.3更新】NCAB 右键最大CAB压缩批处理(XP/WIN7/PE通用,支持多层目录/PE驱动优化) [打印本页]

作者: NicTense    时间: 2011-2-26 02:53
标题: 【3.3更新】NCAB 右键最大CAB压缩批处理(XP/WIN7/PE通用,支持多层目录/PE驱动优化)
简单问题简单化,单文件,单目录,多文件,多目录,多重目录最大CAB压缩一个右键菜单全解决

安装NCAB后会在文件和目录右键菜单中增加“最大CAB压缩”选项,以及在“发送到”菜单中增加“NCAB最大压缩”选项

2011.03.03更新V1.12
1、目录压缩时,修改排序方式为,inf优先的前提下按名称升序
2、修正某些PE下由于\nul方式判断是否目录返回错误结果导致的错误,换了一种更为准确的判断方式
3、重写主要代码,不再需要attrib.exe,并完善在某些特定机器、特定系统的特殊设置下可能导致的错误

没想到几行代码竟然写了这么多个版本,批处理太神奇了,或者是本人知识严重缺乏,没想到判断是否目录都废这么大周折
如果没发现bug的话,这版应该是最终版了。

2011.03.03更新V1.10
1、增加 发送到->NCAB最大压缩 菜单,主要用处是选择多个文件和目录时只打开一个窗口(如果同时选择几千个文件和目录然后右键最大cab压缩会同时打开几千个窗口,可能导致系统崩溃,所以当同时选择的文件比较多时,推荐用发送到菜单的方式进行)
2、修正同时选择多个目录时右键最大CAB压缩菜单时,因生成同名文件导致除第一个目录外,其他目录无法生成压缩文件的错误。
3、增加对多文件多目录的拖放支持
在此特别感谢参与测试反馈和提出改善建议的各位朋友。

2011.03.02更新V1.05
修正路径中含有空格时可能导致的错误,并增加卸载功能

单文件/单目录

  直接右键菜单“最大CAB压缩”,支持多重目录,压缩包内最外层的目录路径将被忽略,空白目录也将被忽略,另外,压缩包已针对PECMD的DEVI命令做了优化处理,即每个目录中的inf文件放在最前面。若希望压缩包内包含当前目录的路径,请新建一个目录,把当前目录拖进该目录后,在该目录上右键菜单。

多文件/多目录

  压缩为多个文件:同时选择多个文件或目录后右键菜单,最大CAB压缩菜单会同时打开多个窗口多进程压缩,发送到NCAB最大压缩则单个窗口单进程压缩
  压缩为单个文件:建一个空目录,把所有要压缩的文件和目录拖进该目录后,在该目录上右键菜单

XP/VISTA/WIN7系统右键菜单安装:

  直接双击ncab.cmd,询问操作时输入I并回车即可(vista/win7下需用管理员身份)

WinPE右键菜单安装:

  将ncad.cmd文件添加到PE内核的system32目录下,并在PECMD.INI里增加下面这行即可
  EXEC !%SystemRoot%\system32\ncab.cmd /reg

直接调用格式:

  ncab 文件或目录名

  也可以直接将要压缩的文件或目录直接拖放到批处理图标上,支持多文件/目录拖放操作。  

卸载NCAB

  双击或直接运行NCAB.CMD,询问操作时输入U并回车即可(vista/win7下需用管理员身份)


原帖发自:http://hi.baidu.com/nictense/blog/item/e4ddcf677eda4330aa184c66.html

下载文件包: 原版: ncab112.rar (2.07 KB, 下载次数: 1312)     zxw修改版: ncab.7z (用另一种方式创建发送到链接)

注:如果用于未集成ncab的TangoPE,请自行在 :reg 下面增加下面这行,以确保不会出现重复菜单
reg delete HKCR\*\shell\zipcab /f>nul 2>nul

ncab.cmd源代码

  1. @echo off
  2. ::V1.12 Build 2011.03.03 By NicTense
  3. ::http://hi.baidu.com/nictense
  4. setlocal enableextensions
  5. setlocal enabledelayedexpansion
  6. if "%~1"=="" goto action
  7. if /i "%~1"=="/reg" goto reg
  8. :cab
  9. if not exist "%~1" exit
  10. dir "%~1" /ad>nul 2>nul||makecab.exe /V3 /D CompressionType=LZX /D CompressionMemory=21 /D MaxDiskSize=0 /L "%~dp1." "%~1"&&goto next
  11. pushd "%~f1"
  12. set /p=<nul>"%temp%\%~n1.tmp"
  13. for /f "tokens=*" %%b in ('dir *.inf /a-d /on /b 2^>nul') do echo "%~f1\%%~b">>"%temp%\%~n1.tmp"
  14. for /f "tokens=*" %%b in ('dir * /a-d /on /b 2^>nul') do if /i "%%~xb" neq ".inf" echo "%~f1\%%~b">>"%temp%\%~n1.tmp"
  15. for /f "tokens=*" %%a in ('dir * /s /ad /on /b 2^>nul') do (
  16. set d=%%~a
  17. set d=!d:%~f1\=!
  18. for /f "usebackq tokens=*" %%b in (`dir "%%~a\*.inf" /a-d /on /b 2^>nul`) do echo "%%~a\%%~b" "!d!\%%~b">>"%temp%\%~n1.tmp"
  19. for /f "usebackq tokens=*" %%b in (`dir "%%~a\*" /a-d /on /b 2^>nul`) do if /i "%%~xb" neq ".inf" echo "%%~a\%%~b" "!d!\%%~b">>"%temp%\%~n1.tmp"
  20. )
  21. makecab.exe /V3 /D CompressionType=LZX /D CompressionMemory=21 /D MaxDiskSize=0 /D FolderSizeThreshold=2147483648 /D DiskDirectoryTemplate="%~dp1." /D CabinetNameTemplate="%~n1.cab" /D InfFileName="%temp%\%~n1.inf" /D RptFileName="%temp%\%~n1.rpt" /F "%temp%\%~n1.tmp"
  22. for %%a in (inf rpt tmp) do del /q "%temp%\%~n1.%%a">nul 2>nul
  23. :next
  24. if "%~2" neq "" shift&goto cab
  25. exit
  26. :action
  27. echo             NCAB V1.12 文件/目录最大CAB压缩右键菜单 By NicTense
  28. echo.
  29. set /p o=请选择您要进行的操作:( I 安装 / U 卸载 / Q 退出 )
  30. if /i "%o%"=="I" goto reg
  31. if /i "%o%"=="U" goto uninstall
  32. if /i "%o%"=="Q" exit
  33. cls&goto action
  34. :reg
  35. reg add HKCR\*\shell\最大CAB压缩\command  /ve /t REG_SZ /d "%SystemRoot%\system32\ncab.cmd "%%1"" /f>nul 2>nul
  36. reg add HKCR\Directory\shell\最大CAB压缩\command  /ve /t REG_SZ /d "%SystemRoot%\system32\ncab.cmd "%%1"" /f>nul 2>nul
  37. if /i "%o%" neq "I" PECMD.EXE LINK %SendTo%\NCAB最大压缩,%SystemRoot%\system32\ncab.cmd&exit
  38. 2>nul reg query HKCR\Directory\shell\最大CAB压缩\command|FIND /i "ncab.cmd">nul||goto needadmin
  39. copy /y "%~0" "%SystemRoot%\system32\ncab.cmd">nul
  40. if exist "%~dp0ncab.lnk" copy /y "%~dp0ncab.lnk" "%USERPROFILE%\SendTo\NCAB最大压缩.lnk">nul
  41. echo.&echo 安装成功,您现在可以在任意文件或目录上使用最大CAB压缩右键菜单了。&echo.&echo 按任意键退出...&pause>nul&exit
  42. :uninstall
  43. reg delete HKCR\*\shell\最大CAB压缩 /f>nul 2>nul
  44. reg delete HKCR\Directory\shell\最大CAB压缩 /f>nul 2>nul
  45. reg query HKCR\Directory\shell\最大CAB压缩>nul 2>nul&&goto needadmin
  46. del /q "%SystemRoot%\system32\ncab.cmd">nul 2>nul
  47. del /q "%USERPROFILE%\SendTo\NCAB最大压缩.lnk">nul 2>nul
  48. echo.&echo 卸载成功,相关文件和右键菜单已删除。&echo.&echo 按任意键退出...&pause>nul&exit
  49. :needadmin
  50. echo.&echo 操作失败,您没有相关的权限,请退出后用管理员身份重新运行本程序。&echo.&echo 按任意键退出...&pause>nul&exit
复制代码
由于要压缩驱动包,习惯了右键菜单,不喜欢额外再用个什么工具,一阵选择乱点的太麻烦了,又占地方,所以写了这个批处理。

解压密码双击压缩包即可看到。

[ 本帖最后由 NicTense 于 2011-3-8 20:58 编辑 ]
作者: blithewind    时间: 2011-2-26 03:02
多文件及目录操作很好,方便!
作者: blithewind    时间: 2011-2-26 03:04
呃,#1中直接下载地址没弄好,应该是:http://u.115.com/file/f44d4a87ef

不过下不了。

[ 本帖最后由 blithewind 于 2011-2-26 03:08 编辑 ]
作者: NicTense    时间: 2011-2-26 03:07
原帖由 blithewind 于 2011-2-26 03:04 发表
呃,#1中直接下载地址没弄好,应该是:http://u.115.com/file/f44d4a87ef


呵呵,晕乎晕乎的,刚才的版本把单文件压缩成.cab好像不太好,改回 .??_的格式,所以重新上传了

其实那个地址也无所谓,就一个cmd文件,直接copy源代码自己保存也一样

睡觉去了,3点睡觉,6点还得起床,命苦啊~~
作者: blithewind    时间: 2011-2-26 03:11
原帖由 NicTense 于 2011-2-26 03:07 发表


呵呵,晕乎晕乎的,刚才的版本把单文件压缩成.cab好像不太好,改回 .??_的格式,所以重新上传了

其实那个地址也无所谓,就一个cmd文件,直接copy源代码自己保存也一样

睡觉去了,3点睡觉,6点还得起床 ...

哦,我说怎么都下不了呢。
压缩成*.??_是比较通常的做法,方便。
是否可以增加多*.??_文件或者目录解压呢?有时会用到,一个个解麻烦。
作者: NicTense    时间: 2011-2-26 03:13
原帖由 blithewind 于 2011-2-26 03:11 发表

哦,我说怎么都下不了呢。
压缩成*.??_是比较通常的做法,方便。
是否可以增加多*.??_文件或者目录解压呢?有时会用到,一个个解麻烦。



我电脑上有7zip,直接右键解压到当前目录就可以了,无论多少个文件

如果不装7zip,添加一个注册表项就可以了,用winrar就可以解压的,明天再聊,先睡觉了
作者: zxyy    时间: 2011-2-26 08:23
楼主的方法不错,在你的PE核心中看到过,很方便的啊。

[ 本帖最后由 zxyy 于 2011-2-26 08:25 编辑 ]
作者: NicTense    时间: 2011-3-2 10:29
有没有测试过发现什么Bug之类的,没有就定案了。
作者: zxyy    时间: 2011-3-2 10:46
只是在迷你版中压缩了几个小文件,暂没有发现BUG。
作者: wangxing    时间: 2011-3-2 10:58
下载了提示要解压呀密码?
作者: NicTense    时间: 2011-3-2 11:00
标题: 回复 #10 wangxing 的帖子
双击就能看到密码啊,或者你直接copy源代码另存为也一样
作者: zxw    时间: 2011-3-2 11:03
标题: 回复 #10 wangxing 的帖子
用winrar查看注释
作者: wangxing    时间: 2011-3-2 11:06
原帖由 NicTense 于 2011-3-2 11:00 发表
双击就能看到密码啊,或者你直接copy源代码另存为也一样


好的 是我大意了 谢谢!
作者: 迷离境界    时间: 2011-3-2 11:06
试了下,对于目录的,好像不行哦
作者: NicTense    时间: 2011-3-2 11:16
标题: 回复 #14 迷离境界 的帖子
如果目录不是很小的话,右键最大cab压缩后会有一个命令行窗口在工作,要等工作完了才会看到生成的文件,临时文件都被设定在临时目录

你是不是关掉了或者隐藏了那个窗口了(被其他窗口盖住了)
作者: NicTense    时间: 2011-3-2 11:26
我知道了,好像是空格的问题,试一下这个

ncab.rar (1 KB, 下载次数: 42)
作者: 迷离境界    时间: 2011-3-2 11:29
标题: 回复 #16 NicTense 的帖子
对于文件夹的,命令行窗口都是一闪而过,而单文件的可以压缩
试了16#的也是一样
作者: NicTense    时间: 2011-3-2 11:34
原帖由 迷离境界 于 2011-3-2 11:29 发表
对于文件夹的,命令行窗口都是一闪而过,而单文件的可以压缩
试了16#的也是一样


运行一下 notepad %temp%\cab.tmp

看看能不能打开这个文件,如果可以帮忙贴一下内容


对了,16楼那个有没有重新安装啊?我测试了各种情况,好像都没问题啊

[ 本帖最后由 NicTense 于 2011-3-2 11:36 编辑 ]
作者: 迷离境界    时间: 2011-3-2 11:36
标题: 回复 #16 NicTense 的帖子
用下面这个可以,但是只对文件夹

安装:

@echo off
set  objfile=%SystemRoot%\system32\mkmaxcab.cmd
title 安装CAB压缩工具
echo ==========================
echo 开始生成工具文件...
echo @Echo Off>%objfile%
echo Title CAB文件夹最大压缩工具—无忧启动>>%objfile%
echo Set Prestr=MAKECAB /D CompressionType=LZX /D CompressionMemory=21 /D MaxDiskSize=CDROM /D Cabinet=On /D Compress=On /D FolderSizeThreshold=5000000>>%objfile%
echo Set dirfull=%%~1>>%objfile%
echo Set dirpath=%%~dp1>>%objfile%
echo Set dirname=%%~nx1>>%objfile%
echo Set Cmdstr=%%Prestr%% /D DiskDirectoryTemplate="%%dirpath%%." /D CabinetNameTemplate="%%dirname%%.CAB">>%objfile%
echo Set Tempfile=%%TEMP%%\mkcabtmp.tmp>>%objfile%
echo If Exist "%%Tempfile%%" Del "%%Tempfile%%" ^>NUL>>%objfile%
echo SETLOCAL ENABLEDELAYEDEXPANSION>>%objfile%
echo For /f "delims=" %%%%i In ('dir "%%dirfull%%" /s /b /a-d') Do (>>%objfile%
echo        Set subname=%%%%i>>%objfile%
echo        Set "subname=!subname:%%dirfull%%\=!">>%objfile%
echo        Echo "%%%%i" "!subname!"^>^>%%Tempfile%%>>%objfile%
echo )>>%objfile%
echo ENDLOCAL>>%objfile%
echo %%Cmdstr%% /F %%Tempfile%%>>%objfile%
echo Del /F /S /Q "%%Tempfile%%" SETUP.INF SETUP.RPT ^>NUL>>%objfile%
echo Set Tempfile=>>%objfile%
echo Set Cmdstr=>>%objfile%
echo Set dirname=>>%objfile%
echo set dirpath=>>%objfile%
echo Set dirfull=>>%objfile%
echo Set Prestr=>>%objfile%
set  objfile=
echo ==========================
echo 开始添加注册表信息...
reg  add HKCR\Directory\shell\mkmaxcab
reg  add HKCR\Directory\shell\mkmaxcab /ve /d 用CAB最大压缩
reg  add HKCR\Directory\shell\mkmaxcab\command
reg  add HKCR\Directory\shell\mkmaxcab\command /ve /d "mkmaxcab.cmd \"%%1\""
echo 开始添加注册表信息...
echo 安装完毕
pause

===================================================================================

卸载:

@echo off
@echo 开始卸载CAB压缩程序
@echo 开始删除注册表项...
reg delete HKCR\Directory\shell\mkmaxcab /f
@echo 开始删除文件...
del %SystemRoot%\system32\mkmaxcab.cmd
@echo 卸载完毕
pause

[ 本帖最后由 迷离境界 于 2011-3-2 11:41 编辑 ]
作者: 迷离境界    时间: 2011-3-2 11:37
标题: 回复 #18 NicTense 的帖子
已经是用16#的了...

cab.tmp:

"C:\Documents and Settings\Administrator\桌面\Tftpd32\EUPL-EN.pdf"
"C:\Documents and Settings\Administrator\桌面\Tftpd32\tftpd32.chm"
"C:\Documents and Settings\Administrator\桌面\Tftpd32\tftpd32.exe"
"C:\Documents and Settings\Administrator\桌面\Tftpd32\tftpd32.ini"

[ 本帖最后由 迷离境界 于 2011-3-2 11:43 编辑 ]

1.jpg (22.37 KB, 下载次数: 117)

1.jpg

作者: NicTense    时间: 2011-3-2 11:47
标题: 回复 #20 迷离境界 的帖子
貌似在一些特定目录下会出错,我研究一下,不过呆会要出去,晚上再放出修正版本
作者: 迷离境界    时间: 2011-3-2 11:51
把文件夹或者单文件拖放到本CMD上,支持多目录,以前在论坛里找到的,参考下,弄个右键菜单的吧

[ 本帖最后由 迷离境界 于 2011-3-2 12:12 编辑 ]

(拖放到此)文件夹最大压缩工具.rar

711 Bytes, 下载次数: 52, 下载积分: 无忧币 -2


作者: NicTense    时间: 2011-3-2 12:44
ncab.rar (1011 Bytes, 下载次数: 43)

这个应该可以了,不过还有一个问题,在win7/vista的系统目录里还是不行,因为需要管理员权限,还得研究一下怎么取得权限,其他地方应该没问题了
作者: 迷离境界    时间: 2011-3-2 13:06
标题: 回复 #23 NicTense 的帖子
文件夹或者单文件右键都正常,但拖拽到此CMD的话,文件夹的正常,单文件不行...

XP3系统下测试的,偶没WIN7系统试...
-------------------------------------


来个卸载的吧 ,O(∩_∩)O

@echo off
@echo 开始卸载CAB压缩程序
@echo 开始删除注册表项...
reg delete HKCR\*\shell\最大CAB压缩 /f
reg delete HKCR\Directory\shell\最大CAB压缩 /f
@echo 开始删除文件...
del %SystemRoot%\system32\ncab.cmd
@echo 卸载完毕
pause

[ 本帖最后由 迷离境界 于 2011-3-2 13:26 编辑 ]
作者: zxw    时间: 2011-3-2 13:14
拖放单文件还是有问题。
右键单文件扩展名不符预期。
作者: 迷离境界    时间: 2011-3-2 13:17
标题: 回复 #25 zxw 的帖子
右键单文件扩展名压缩后为 ??_而不是.cab已经如一楼所说的了....
作者: zxw    时间: 2011-3-2 16:30
YY了一下,解决右键单文件压缩问题。支持同目录下多文件多目录,添加了缷载功能。
MAKECAB.7z (1.12 KB, 下载次数: 68)

[ 本帖最后由 zxw 于 2011-3-3 12:20 编辑 ]
作者: NicTense    时间: 2011-3-2 19:14
单文件拖放不行是什么个情况阿,我测试了没有问题啊
单文件生成.cab是故意的,要.??_就右键,要.cab就直接命令行或拖放
作者: 2010eflying    时间: 2011-3-2 19:23
标题: 回复 #1 NicTense 的帖子
楼主辛苦了,先占个位置收藏。
作者: zxw    时间: 2011-3-2 19:39
标题: 回复 #28 NicTense 的帖子
在我这里,单文件拖放生成的文件不在该单文件所在目录,经搜索,跑到%USERPROFILE%下去了。
加个 参数 就OK了: /L %~dp1
作者: NicTense    时间: 2011-3-2 19:45
原帖由 zxw 于 2011-3-2 19:39 发表
在我这里,单文件拖放生成的文件不在该单文件所在目录,经搜索,跑到%USERPROFILE%下去了。
加个 参数 就OK了: /L %~dp1


什么系统?  单文件右键菜单呢?
作者: zxw    时间: 2011-3-2 20:09
标题: 回复 #31 NicTense 的帖子
xp sp3
单文件右键菜单没有问题。
我yy的没有问题了。
作者: NicTense    时间: 2011-3-2 20:57
好了,已经修改好重新上传了
作者: 迷离境界    时间: 2011-3-2 21:16
原帖由 NicTense 于 2011-3-2 20:57 发表
好了,已经修改好重新上传了



很好,正常了....只是驱动压缩的那个压缩率和老九的http://bbs.wuyou.net/forum.php?mod=viewthread&tid=176713&extra=page%3D15这两个比差了点...
Yonsm 的 XCAB 增强版,这个压缩率比较高点...

[ 本帖最后由 迷离境界 于 2011-3-2 21:30 编辑 ]

QQ截图未命名.jpg (9.78 KB, 下载次数: 115)

QQ截图未命名.jpg

作者: 2011asks    时间: 2011-3-2 21:47
标题: 回复 #1 NicTense 的帖子
谢谢楼主收藏了为什么不几长?
作者: zxw    时间: 2011-3-2 22:58
@ NicTense :
试了一下,还是不支持同时操作多个文件及目录。如:选择多个文件及目录,右键菜单只能生成其中一个;拖放也是一样。
你试试我YY的那个就知道了。
作者: NicTense    时间: 2011-3-2 23:10
标题: 回复 #36 zxw 的帖子
同时选择多个目录和文件的右键菜单问题,就是目录也有,文件也有,结果右键菜单没有最大cab压缩

考虑这个问题,写注册表那里应该同一交给ncab处理,把*那项也按directory的方式写注册表就可以解决这个问题

不过这样,就得上面的"%~1" "%~n1.cab"的"%~n1.cab"去掉,以保证文件右键生成的文件以??_为后缀

而且会同时打开很多个窗口


你说的是拖动的问题吧,我原来基本上就没考虑这种用法,主要是考虑右键菜单

粗略的看了一下你写的那个版本,你的程序里 if not %tmpstr%=="" goto begin  这句少了双引号吧?

右键菜单选择多个目录和文件的时候能不能实现不打开多个窗口,而是像拖动那样,选择的全部文件成为参数呢?打开多个窗口好像不太好

[ 本帖最后由 NicTense 于 2011-3-2 23:50 编辑 ]
作者: zqywult    时间: 2011-3-3 01:59
在XP3下,直接双击ncab.cmd,询问操作时输入I并回车,就退出了,
没有“安装成功,您现在可以在任意文件或目录上使用最大CAB压缩右键菜单了”的提示,也没有CAB压缩右键菜单,把文件或目录拖到ncab.cmd上,闪一下,也没有产生CAB压缩文件。
我检查C:\WINDOWS\system32\下也没有ncab.cmd。
双击ncab.cmd,询问操作时输入U并回车,反而出现:“卸载成功,相关文件和右键菜单已删除。按任意键退出...”
看来我的XP3系统似乎安装不上ncab??
请LZ指教是怎么回事?谢谢了!!

[ 本帖最后由 zqywult 于 2011-3-3 02:07 编辑 ]
作者: zxw    时间: 2011-3-3 08:42
标题: 回复 #37 NicTense 的帖子
右键菜单选择多个目录和文件,可以全部传递。
作者: slore    时间: 2011-3-3 08:53
右键菜单选择多个目录和文件,可以全部传递。


右键菜单的话,是各个文件传递到command里面,多个进程。。。



右键->发送到 的话是全参数传递到一个bat上
作者: zxw    时间: 2011-3-3 09:16
标题: 回复 #40 slore 的帖子
嗯,是有这个问题。这个倒没注意。粗略想了一下,右键菜单似乎无法避免打开多个进程。

[ 本帖最后由 zxw 于 2011-3-3 09:33 编辑 ]
作者: 迷离境界    时间: 2011-3-3 10:05
仅供参考,呵呵....
以下是各种CAB工具对同一个文件夹DRIVERS_NET压缩率的对比:

cab.jpg (56.13 KB, 下载次数: 119)

cab.jpg

1.jpg (67.15 KB, 下载次数: 112)

1.jpg

2.jpg (62.85 KB, 下载次数: 102)

2.jpg

3.jpg (57.01 KB, 下载次数: 123)

3.jpg

4.jpg (58.21 KB, 下载次数: 118)

4.jpg

5.jpg (63.08 KB, 下载次数: 118)

5.jpg

6.jpg (76.56 KB, 下载次数: 113)

6.jpg

7.jpg (114.34 KB, 下载次数: 125)

7.jpg

作者: 2010ystx    时间: 2011-3-3 10:13
已下谢楼主了!!!!!!!!!!!!
作者: NicTense    时间: 2011-3-3 10:15
奇怪了,按道理压缩比应该都一样的,是不是我用少了哪个参数导致的,呆会再测试一下
作者: 迷离境界    时间: 2011-3-3 10:18
原帖由 NicTense 于 2011-3-3 10:15 发表
奇怪了,按道理压缩比应该都一样的,是不是我用少了哪个参数导致的,呆会再测试一下



你看看22#的那个:(拖放到此)文件夹最大压缩工具.CMD....

比较来看:貌似HeleCABCompresor的压缩率好点

[ 本帖最后由 迷离境界 于 2011-3-3 10:21 编辑 ]
作者: NicTense    时间: 2011-3-3 10:51
标题: 回复 #45 迷离境界 的帖子
你确认你没弄错吗,我测试了一下,貌似用哪个结果都差不多,应该只是误差而已

我这里用ncab出来的反而是最小的,好像跟压缩比有关系的参数,这么多个用的都是完全一样的,应该只是误差而已吧

因为用同一个工具,数据包大一点的话,每次出来的结果也是不一样的,但是误差应该是很小的

你那个数据,ncab出来的大了1M多,不可能吧
作者: 迷离境界    时间: 2011-3-3 11:10
标题: 回复 #46 NicTense 的帖子
我试过几次了,都是上图的那些结果....
以前倒没注意体积.....
别的还没试,只在昨天打包这个驱动包时留意了下体积,


要不我传那个DRIVERS_NET驱动包上来,HeleCABCompresor打包的,你解开后再打包看看....

http://u.115.com/file/f67980eabb

[ 本帖最后由 迷离境界 于 2011-3-3 11:18 编辑 ]
作者: NicTense    时间: 2011-3-3 11:11
标题: 回复 #47 迷离境界 的帖子
好,可能跟样本有关系,上传上来我测试一下
作者: 迷离境界    时间: 2011-3-3 11:39
用小一点的文件,底下这个解开后再打包也是有些差别...

[ 本帖最后由 迷离境界 于 2011-3-3 11:43 编辑 ]

CABMan.part1.rar

390.63 KB, 下载次数: 21, 下载积分: 无忧币 -2

CABMan.part2.rar

390.63 KB, 下载次数: 20, 下载积分: 无忧币 -2

CABMan.part3.rar

110.23 KB, 下载次数: 19, 下载积分: 无忧币 -2


作者: NicTense    时间: 2011-3-3 11:49
解开用ncab打包后 911186,原来是911256,貌似还小了啊

难道说/D Cabinet=On /D Compress=On 这2个参数在不同电脑上的默认值有区别?

在我这里完全测不出什么来,能不能帮个忙,在你的电脑上修改一下ncab里面makecab的那行参数,添加上面2个看看有没有区别
作者: 迷离境界    时间: 2011-3-3 11:53
标题: 回复 #50 NicTense 的帖子
对这些P处理我很头疼...呵呵,所以,一点功底都没有...
要加到哪里呢
作者: NicTense    时间: 2011-3-3 11:54
attrib -h *.inf >nul
)
makecab.exe /V3 /D CompressionType=LZX /D CompressionMemory=21 (加到到这里来)
作者: 迷离境界    时间: 2011-3-3 12:01
attrib -h *.inf >nul
)
makecab.exe /V3 /D CompressionType=LZX /D CompressionMemory=21 /D Cabinet=On /D Compress=On /D MaxDiskSize=0 /D DiskDirectoryTemplate="%~dp1." /D CabinetNameTemplate="%~n1.cab" /D InfFileName="%temp%\setup.inf" /D RptFileName="%temp%\setup.rpt" /F "%temp%\cab.tmp"

是这样吧

[ 本帖最后由 迷离境界 于 2011-3-3 12:23 编辑 ]
作者: 迷离境界    时间: 2011-3-3 12:06
attrib -h *.inf >nul
)
makecab.exe /V3 /D CompressionType=LZX /D CompressionMemory=21 /D MaxDiskSize=CDROM /D Cabinet=On /D Compress=On /D MaxDiskSize=0 /D DiskDirectoryTemplate="%~dp1." /D CabinetNameTemplate="%~n1.cab" /D InfFileName="%temp%\setup.inf" /D RptFileName="%temp%\setup.rpt" /F "%temp%\cab.tmp"

[ 本帖最后由 迷离境界 于 2011-3-3 12:23 编辑 ]
作者: NicTense    时间: 2011-3-3 12:07
标题: 回复 #53 迷离境界 的帖子
是的,实在想不到在你的电脑里压缩比小的原因,只能猜测可能是参数默认值引起的
作者: 迷离境界    时间: 2011-3-3 12:11
上面53#、54#两个参数不同结果都一样....也和不加前一样体积
作者: 迷离境界    时间: 2011-3-3 12:14
晕,我明白了,我只加了红色那行就行了

attrib -h *.inf >nul
)
makecab.exe /V3 /D CompressionType=LZX /D CompressionMemory=21 /D FolderSizeThreshold=5000000 /D MaxDiskSize=0 /D DiskDirectoryTemplate="%~dp1." /D CabinetNameTemplate="%~n1.cab" /D InfFileName="%temp%\setup.inf" /D RptFileName="%temp%\setup.rpt" /F "%temp%\cab.tmp"
exit

[ 本帖最后由 迷离境界 于 2011-3-3 12:19 编辑 ]

2011-03-03_121425.jpg (51.69 KB, 下载次数: 123)

2011-03-03_121425.jpg

作者: NicTense    时间: 2011-3-3 13:08
标题: 回复 #57 迷离境界 的帖子
这个值pecmd,xcmd的更大,在我这里用哪个好像都没明显的区别,能不能找到这个参数的详细说明?
作者: 迷离境界    时间: 2011-3-3 14:05
标题: 回复 #58 NicTense 的帖子
偶是P处理盲,纯粹是复制别的过去试的....
也不知道其他人的使用情况如何........光两人的对比也说明不了说明.....或许我这是特例呢.....
作者: NicTense    时间: 2011-3-3 14:22
测试了一下,用5000000和2147483648(2T)结果完全一样,但是用0就会导致压缩包变大

看样子在你的机子里默认值是0,那我改一下,这个参数还是指定好了,顺便把拖动多个文件和目录也处理一下,再加上发送到的快捷方式

这样应该就完美了
作者: 迷离境界    时间: 2011-3-3 16:51
原帖由 NicTense 于 2011-3-3 14:22 发表
测试了一下,用5000000和2147483648(2T)结果完全一样,但是用0就会导致压缩包变大

看样子在你的机子里默认值是0,那我改一下,这个参数还是指定好了,顺便把拖动多个文件和目录也处理一下,再加上发送到的 ...



看样子在你的机子里默认值是0.....这句话是指什么?不理解....天使明示下吧...这个默认值能改吗
作者: NicTense    时间: 2011-3-3 16:53
修改好了,再测试一下,这次增加了 发送到 NCAB最大压缩 菜单,如果同时选择的文件和目录太多的话,用这个不会跳出一大堆窗口

多文件和目录拖放也没问题了,就是个人不太习惯这么用,发送到菜单应该会更方便一些

用在PE部分的选项也添加了发送到菜单了,有空的话也测试一下
作者: NicTense    时间: 2011-3-3 16:54
原帖由 迷离境界 于 2011-3-3 16:51 发表



看样子在你的机子里默认值是0.....这句话是指什么?不理解....天使明示下吧...这个默认值能改吗


这个默认值不知道在哪设置,也没意义,直接在命令行里指定不用默认值就不会出问题了,老版本不管它了,那个版本还有一个隐藏的bug

就是当选择多个目录右键菜单时,会因为同时去写setup.inf等几个文件而导致第一个以外的目录全部无法生成cab文件,已修正

[ 本帖最后由 NicTense 于 2011-3-3 16:55 编辑 ]
作者: NicTense    时间: 2011-3-3 19:25
ncab111.rar (2.07 KB, 下载次数: 32) 迷离境界 看到测试一下这个版本,跟1楼不一样的

换了一种写法,换了一种排序,而且不需要attrib.exe,貌似在我这里压缩率好像比原来的高了一点
作者: 迷离境界    时间: 2011-3-4 00:13
标题: 回复 #64 NicTense 的帖子
确实压缩率比上版稍好点...

[ 本帖最后由 迷离境界 于 2011-3-4 00:20 编辑 ]

1.jpg (48.52 KB, 下载次数: 102)

1.jpg

2.jpg (52.07 KB, 下载次数: 108)

2.jpg

3.jpg (50.78 KB, 下载次数: 109)

3.jpg

4.jpg (47.96 KB, 下载次数: 104)

4.jpg

作者: NicTense    时间: 2011-3-4 00:20
ncab112.rar (2.07 KB, 下载次数: 43)

有空再测试一下这个,应该是最终版了

和1.11版的区别是

1.11版包括之前所有版本貌似在有些pe下会出错,原因是用 if not exist "%~1\nul" 来判断是否目录得到错误的结果

原因不清楚,可能是\和\nul的形式判断需要某个系统文件支持吧,所以换了一种方式来判断

新的判断方式可以适应正常系统和pe

新的版本除inf优先外,采用按文件名排序,压缩比应该是个案,就是说不同的对象,不同的排序方式可能会出现不同的结果,有些情况这种排序压缩比高,有些则相反

理论上,这几个工具都是用的相同的参数来压缩,压缩比区别应该很小很小

[ 本帖最后由 NicTense 于 2011-3-4 00:22 编辑 ]
作者: 迷离境界    时间: 2011-3-4 00:27
标题: 回复 #66 NicTense 的帖子
压缩率112和111一样,和110版的压缩率相差也不是很明显.....很好了...
PE下还没测试....
作者: NicTense    时间: 2011-3-4 00:37
标题: 回复 #67 迷离境界 的帖子
嗯,112主要是修正pe下的错误而已,我也不知道为什么pe下(tangope下,其他pe是不是不知道)不能用 \ 或者\nul来判断是否目录
这个问题之前完全没考虑过,估计也没几个会想到

压缩比,貌似我换不同的目录测试,110和112由于排序方式不同,有的会这个大一些,有的则那个大一些,总体相差很小,我估计其他工具也是这个原因导致的有微笑的差别,所以压缩率这个因素应该可以忽略

现在多文件多目录同时最大cab压缩,发送到NCAB最大压缩,还有拖动应该都没问题了吧
作者: 迷离境界    时间: 2011-3-4 01:48
原帖由 NicTense 于 2011-3-4 00:37 发表
 现在多文件多目录同时最大cab压缩,发送到NCAB最大压缩,还有拖动应该都没问题了吧



右键、发送、拖拽这些暂时没发现问题....多文件多目录同时右键最大cab压缩这个不敢太多,只试了文件+目录一起十几个,因为怕开窗口太多死机....

改天试一下PE使用...

[ 本帖最后由 迷离境界 于 2011-3-4 01:49 编辑 ]
作者: notepad    时间: 2011-3-4 08:42
这个好用啊,感谢分享!
作者: zxw    时间: 2011-3-4 12:29
又YY了一下,做成一个单文件的。
ncab.7z (1.41 KB, 下载次数: 455)
作者: NicTense    时间: 2011-3-4 13:07
标题: 回复 #71 zxw 的帖子
谢谢,原来可以用inf文件创建链接啊,已放到1楼一并提供下载,有空再测试一下这种方式

不过最好不要直接把cmd文件当inf使用,将inf内容输出到一个临时文件,这样会好点
作者: zxw    时间: 2011-3-4 15:19
标题: 回复 #72 NicTense 的帖子
当把该cmd文件当inf使用时,以;打头的语句会被屏蔽。
作者: NicTense    时间: 2011-3-4 15:59
标题: 回复 #73 zxw 的帖子
不过对cmd来说,那些inf语句会导致一大堆错误提示的
作者: zxw    时间: 2011-3-4 16:04
标题: 回复 #74 NicTense 的帖子
已用goto 语句避开。
作者: 2011wgm    时间: 2011-3-4 19:32
还是用注册来的方便呀
作者: zxyy    时间: 2011-3-5 17:10
报告楼主老大:按如下方法添加到你的“Tango WinPE 2011 MINI(0222更新22M预发布版)”精简版与完整版PE中后,

  将ncad.cmd文件添加到PE内核的system32目录下,并在PECMD.INI里增加下面这行即可
  EXEC !%SystemRoot%\system32\ncab.cmd /reg

执行完后,右键中出现了两个“最大CAB压缩”选项,字母 C 下边带有下划线的这一个“最大CAB压缩”,应该是你PE中原集成的选项,使用 NCAB 批处理后,最 字下边带有下划线的“大CAB压缩”,是新添加上的。估计楼主还要修改 NCAB.cmd  批处理代码了,否则在你的PE右键中会出现两个 “最大CAB压缩” 选项的。





  X:\XPPE\SYSTEM32 中也没有找到最初集成的CAB压缩相关语句,楼主是否直接集成到PE的注册表中了?还有,右键中有时还会出现 UleatEDIT 编辑的选项,也是直接集成了吧?

  同时报告,前天在电脑城测试,你的完整版PE与水大的精简维护版16.66,均不能进入联想 i5、与戴尔 i7 的笔记本中,因时间原因,只测试了两台笔记本,都是在出现“请等待……”后片刻出现蓝屏。当时在纸上记下了笔记本电脑的型号与蓝屏代码,但今天发贴时却再也找不到那小纸片了,遗憾。

  等待您修改 NCAB.CMD 的代码了,谢谢你的分享。辛苦了。

[ 本帖最后由 zxyy 于 2011-3-5 17:58 编辑 ]

CAB右键.GIF (939 Bytes, 下载次数: 110)

CAB右键.GIF

作者: dfw9    时间: 2011-3-5 20:15
03PE中使用,压体积大一些的iso文件(80MB以上),会在结束时跳出,使机器重启,郁闷。
作者: NicTense    时间: 2011-3-8 20:24
标题: 回复 #77 zxyy 的帖子
你在 :reg 下面加一行
reg delete HKCR\*\shell\zipcab /f>nul 2>nul

就可以了
作者: zxyy    时间: 2011-3-8 20:31
谢谢了,我也已经找到这条注册表语句并在核心中加上了删除。个人认为现在用你的Tango WinPE 的朋友不少,是否需要将“reg delete HKCR\*\shell\zipcab /f>nul 2>nul”在Tango WinPE和NCAB压缩的帖子里做个说明呢,能看到你上边回复的人毕竟是少啊。
作者: NicTense    时间: 2011-3-8 21:00
标题: 回复 #80 zxyy 的帖子
好了,写到1楼去了,其实我一般都是直接修改software文件,把注册项直接写进去的
这个批处理为了通用,所以不针对任何一个PE,有需要的自己加一下就可以了

按道理这种程度的修改,应该大家都会的,要不在无忧就白混了
作者: 极度凶残    时间: 2011-3-10 10:13
是件不错的工具,维护必备,收下了,谢谢楼主的分享
作者: haifeng531    时间: 2011-3-11 12:36
很方便,谢谢。。。。。。。。。。。。。
作者: ljy3282393    时间: 2011-3-14 00:58
感谢楼主分享.学习和支持一下。
作者: haifeng531    时间: 2011-3-19 19:01
我将它放在了你的兔年珍藏版里,在有的电脑上运行正常,有的电脑上压缩大文件会无提示退出,提示目录无效

[ 本帖最后由 haifeng531 于 2011-3-20 13:15 编辑 ]

sshot-1.png (29.88 KB, 下载次数: 103)

sshot-1.png

作者: NicTense    时间: 2011-3-23 20:25
标题: 回复 #85 haifeng531 的帖子
可能是目录权限的问题

ps:我现在知道网上那么多垃圾从哪来的了
刚浏览网页竟然看到这个
http://www.ouyaoxiazai.com/soft/stgj/14/16750.html

神阿,我写好2K的东西,他弄了100多k出来....
作者: loosiyiup    时间: 2011-3-23 23:16
win7环境,转移过TMP等等文件目录。在对单目录、多目录压缩时无效,对多文件压缩为单个文件也无效,之后在TMP目录中发现操作过的文件以*.tmp格式的临时文件,很的,1KB左右。
作者: NicTense    时间: 2011-3-24 00:43
标题: 回复 #87 loosiyiup 的帖子
具体是在哪个目录下操作的,之前测试过好像在系统目录里面就会操作失败,由于这个也就是方便压缩一些pe的文件什么的,没必要在系统目录里操作,懒得去研究了
作者: loosiyiup    时间: 2011-3-24 16:27
原帖由 NicTense 于 2011-3-24 00:43 发表
具体是在哪个目录下操作的,之前测试过好像在系统目录里面就会操作失败,由于这个也就是方便压缩一些pe的文件什么的,没必要在系统目录里操作,懒得去研究了



呵,的确,不过是小问题,不在系统目录里操作就没有问题了,也没什么。
作者: wanshua    时间: 2011-3-24 19:58
有了这个方便多了~~
作者: 2011tail88    时间: 2013-3-5 15:57
感谢分享啊。下来看看。
作者: 2012peter2    时间: 2013-8-20 09:57
支持源码公开
作者: 阿松    时间: 2014-10-16 16:54
好东西,下来看看

作者: sparkguo    时间: 2019-9-17 13:20
本帖最后由 sparkguo 于 2019-9-18 08:45 编辑
迷离境界 发表于 2011-3-2 11:36
用下面这个可以,但是只对文件夹

安装:


这个好,收了




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3