无忧启动论坛

标题: 闲着没事,写个批处理分享一下 [打印本页]

作者: 老毛桃    时间: 2006-6-1 21:27
标题: 闲着没事,写个批处理分享一下
在光盘启动区看到过一些网友说需要将一些文件打包成 CAB 格式,对于单个文件,makecab 命令即可搞定。但是若要将批量文件打包成一个 CAB 格式的文件,就不大容易了,需要设置很多参数,甚至要借助脚本才能方便地执行。

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

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

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


[ 本帖最后由 老毛桃 于 2007-1-13 04:59 PM 编辑 ]

1.JPG (54.03 KB, 下载次数: 488)

1.JPG

MCab.rar

6.33 KB, 下载次数: 7267, 下载积分: 无忧币 -2

MCab.rar

7.26 KB, 下载次数: 9622, 下载积分: 无忧币 -2

1.0.8.0113 版


作者: dgxhls    时间: 2006-6-1 22:07
不错的说,顶!
作者: chen463    时间: 2006-6-2 00:46
好样的。不会用耶!
这是甚么用法?可全部打包啊!给点提示,好耶!可以带回家。
作者: strongchen    时间: 2006-6-2 01:11
嘿嘿,ms用类似winrar一样的cab压缩工具啊。。。(不会准备在dos下面做这个吧)
作者: 老毛桃    时间: 2006-6-2 01:40
原帖由 chen463 于 2006-6-2 00:46 发表
好样的。不会用耶!
这是甚么用法?可全部打包啊!给点提示,好耶!可以带回家。

菜单1,是将 某文件夹(比如 drivers)下的所有文件压缩到一个 cab 格式的压缩包中

菜单2,是将 某文件夹(比如 drivers)下的所有文件逐个压缩到另一个文件夹中(以 N 个 XXX.XX_ 的形式保存在新的文件夹中)

菜单3,就是对单个的文件,比如 SETUP.EXE 压缩


明白吗?
作者: zkl    时间: 2006-6-2 09:36
有密码打不开。。。
作者: peak8    时间: 2006-6-2 10:25
原帖由 zkl 于 2006-6-2 09:36 AM 发表
有密码打不开。。。

maotao
作者: zgzxp    时间: 2006-6-2 14:49
我感兴趣的是毛桃用什么打的包
作者: blbl    时间: 2006-6-2 17:29
原帖由 zgzxp 于 2006-6-2 02:49 PM 发表
我感兴趣的是毛桃用什么打的包



应该是这个 Quick Batch File (De)Compiler 不过加了密码
反编译不了~~  呵呵  

毛桃不介意告诉我们源代码吧?

[ 本帖最后由 blbl 于 2006-6-2 05:35 PM 编辑 ]
作者: 老毛桃    时间: 2006-6-2 20:26
原帖由 blbl 于 2006-6-2 17:29 发表
应该是这个 Quick Batch File (De)Compiler 不过加了密码
反编译不了~~  呵呵  

毛桃不介意告诉我们源代码吧?

呵呵,是的,确实是用 QBFC 打的包。

本来想用 Script2EXE 打包的,不过临时找不到 Script2EXE,所以将就着用了。用 Script2EXE 打包的可执行文件只有 12KB,体积更小。用 ResHacker 也可以更改文件图标。

至于说源代码的问题,呵呵,老毛桃说过了,翻版不究,无忧的兄弟当然可以分享。

就是运行这个文件的时候,不要退出程序,你会在 %TEMP% 中找到一个 46146433.bat 这样的批处理文件,这就是源程序咯。QBFC、Script2EXE 的打包功能都很粗糙的。。。
作者: 老毛桃    时间: 2006-6-2 20:30
再上传一个使用 Script2EXE 打包的上来,体积极小。

MCAB.rar

6.33 KB, 下载次数: 861, 下载积分: 无忧币 -2


作者: wang6610    时间: 2006-6-2 21:33
毛桃兄能否传一个Script2EXE 玩玩,谢谢。。。
作者: dgxhls    时间: 2006-6-2 21:51
奖励10分。
作者: dgxhls    时间: 2006-6-2 21:53
原帖由 打狗协会理事 于 2006-6-2 09:51 PM 发表
奖励10分。

晕,今天的权限用完了,明天补上。
作者: 老毛桃    时间: 2006-6-2 22:01
原帖由 wang6610 于 2006-6-2 21:33 发表
毛桃兄能否传一个Script2EXE 玩玩,谢谢。。。

呵呵,接着!

找这个玩意 N 难!在 Baidu、Google、MSN 都搜索不到下载地址呢!

打包的体积 N 小,唯一比不上 QBFC 的就是不能加壳,也不能自定义图标(不过这可以借助 ResHacher 解决!)

ExeScript.rar

395.56 KB, 下载次数: 1349, 下载积分: 无忧币 -2


作者: 老毛桃    时间: 2006-6-2 22:02
原帖由 打狗协会理事 于 2006-6-2 21:53 发表
晕,今天的权限用完了,明天补上。

明天?明天就得加上利息了!
作者: dgxhls    时间: 2006-6-2 22:12
原帖由 老毛桃 于 2006-6-2 10:02 PM 发表

明天?明天就得加上利息了!

加11分,总可以了吧!
作者: 老毛桃    时间: 2006-6-2 22:51
晕。。。
作者: wang6610    时间: 2006-6-3 07:51
严重感谢毛桃兄。。。。。。
作者: yhyh204    时间: 2006-6-3 10:24
感谢楼主的好东西,有时候这样的东西确实有用去。
作者: 老毛桃    时间: 2006-6-3 21:21
原帖由 wang6610 于 2006-6-3 07:51 发表
严重感谢毛桃兄。。。。。。

呵呵,共勉!
作者: TCLSHX    时间: 2006-6-4 00:29
原帖由 老毛桃 于 2006-6-3 09:21 PM 发表

呵呵,共勉!

收藏了!好东西.
作者: 老毛桃    时间: 2006-6-4 00:32
加上  /D CompressionType=LZX /D CompressionMemory=21 这两个参数后的压缩比,是非常高的,已经超过了 WinZIP 的最高压缩比,比 WinRAR 的最高压缩比仅仅查一点点而已,我测试过,大概相差不到 1%。
作者: TCLSHX    时间: 2006-6-4 08:07
QBFC做的,瑞星总是把它当成病毒,这瑞星真烦.

毛兄可否把你的这个QBFC做的反编译密码说一下.
作者: zgzxp    时间: 2006-6-4 08:18
ECHO.
ECHO 老毛桃感谢您的使用,如果您有什么好的建议,请 QQ 我!


QQ都不写

怎么QQ你哦
作者: 冬天的雪    时间: 2006-6-4 14:58
谢谢!收下!
作者: 雨哭了    时间: 2006-6-4 17:36
原帖由 老毛桃 于 2006-6-1 09:27 PM 发表
在光盘启动区看到过一些网友说需要将一些文件打包成 CAB 格式,对于单个文件,makecab 命令即可搞定。但是若要将批量文件打包成一个 CAB 格式的文件,就不大容易了,需要设置很多参数,甚至要借助脚本才能方便地执 ...


毛桃大哥,能不能帖一下你的这个批处理让我们看一下.
作者: benchbody    时间: 2006-6-4 17:57
原帖由 老毛桃 于 2006-6-2 08:30 PM 发表
再上传一个使用 Script2EXE 打包的上来,体积极小。

            
没办法解压,要密码!!:(
作者: renhuichen    时间: 2006-6-4 17:59
用什么打的包
作者: 雨哭了    时间: 2006-6-4 19:07
原帖由 benchbody 于 2006-6-4 05:57 PM 发表

            
没办法解压,要密码!!:(

密码是maotao
作者: 老毛桃    时间: 2006-6-5 10:47
原帖由 TCLSHX 于 2006-6-4 08:07 发表
QBFC做的,瑞星总是把它当成病毒,这瑞星真烦.

毛兄可否把你的这个QBFC做的反编译密码说一下.

哈哈,其实不需要什么反编译密码的了,你运行这个程序的时候,会在你的 %temp% 文件夹下生成一个 34616174.BAT 这样形式的批处理文件(文件名不定),打开看看就知道了。

反编译密码?是 iamlmt 哈哈。

这样吧,干脆我把批处理的内容贴出来好了,还请各位大侠帮我指点指点
  1. @ECHO OFF
  2. SET TT=老毛桃制作的批量文件 CAB 打包工具
  3. COLOR 1F
  4. TITLE %TT%
  5. SET ERR=
  6. SET C0=MAKECAB /D CompressionType=LZX /D CompressionMemory=21 /D MaxDiskSize=CDROM /D Cabinet=ON /D Compress=ON /D FolderSizeThreshold=5000000

  7. :BEGIN
  8. CLS
  9. ECHO.
  10. ECHO        ╭══════════════════╮
  11. ECHO        ║                  ║
  12. ECHO    ╭═══┤ 老毛桃制作的批量文件 CAB 打包工具! ├═══╮
  13. ECHO    ║   ║                  ║   ║
  14. ECHO    ║   ╰══════════════════╯   ║
  15. ECHO    ║                          ║
  16. ECHO    ║   您是需要将批量文件制作成一个压缩包呢?     ║
  17. ECHO    ║   还是想生成 N 个 CAB 格式的单独压缩文件?    ║
  18. ECHO    ║                          ║
  19. ECHO    ║    [1] 将批量文件制作成一个压缩包        ║
  20. ECHO    ║    [2] 将每个文件制作成单独压缩文件       ║
  21. ECHO    ║    [3] 将单个文件制作成单独压缩文件       ║
  22. ECHO    ║    [Q] 退出                   ║
  23. ECHO    ║                          ║
  24. ECHO    ╟──────────────────────────╢
  25. ECHO    ║ 注:1. 待压缩文件的父目录需与本程序在同一路径下; ║
  26. ECHO    ║   2. 待压缩文件所在路径(包括父路径)不许有空格。 ║
  27. ECHO    ╟══════════════════════════╢
  28. ECHO    ║ 版权所有:老毛桃   供无忧朋友们交流,翻版不究 ║
  29. ECHO    ╰──────────────────────────╯
  30. ECHO.
  31. SET Choice=
  32. SET /P Choice=    请选择要进行的操作(1/2/3/Q),然后按回车:

  33. IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
  34. IF /I '%Choice%'=='1' GOTO LOOPA
  35. IF /I '%Choice%'=='2' GOTO LOOPA
  36. IF /I '%Choice%'=='3' GOTO LOOPD
  37. IF /I '%Choice%'=='Q' EXIT
  38. GOTO BEGIN

  39. :LOOPA
  40. IF /I '%Choice%'=='1' (
  41. TITLE %TT% - 制作成一个压缩包
  42. )
  43. IF /I '%Choice%'=='2' (
  44. TITLE %TT% - 制作成多个单独压缩文件
  45. )
  46. IF "%Err%"=="" (
  47. CLS
  48. )
  49. ECHO 请输入需压缩的文件所在的目录名,如 Files
  50. SET Ds=
  51. SET /P Ds=
  52. IF "%Ds%"=="" goto LOOPA
  53. IF NOT EXIST %Ds% (
  54. SET Err=1
  55. ECHO.
  56. CLS
  57. ECHO 您所输入的路径不存在,请重新输入
  58. ECHO.
  59. GOTO LOOPA
  60. )

  61. IF /I '%Choice%'=='1' GOTO LOOPB
  62. GOTO LOOPC

  63. :LOOPB
  64. CLS
  65. ECHO 请输入需要保存的压缩包文件名,如 Drive.CAB
  66. SET FCab=
  67. SET /P FCab=
  68. IF "%FCab%"=="" goto LOOPB
  69. SET C=%C0% /D DiskDirectoryTemplate=.\ /D CabinetNameTemplate=%FCab%
  70. SET TF=%TEMP%\Files.tmp
  71. IF EXIST %TF% DEL %TF% >NUL
  72. FOR /F %%i in ('dir /b %Ds%') do ECHO %Ds%\%%i >>%TF%
  73. ECHO.
  74. %C% /F %TF%
  75. DEL /F /S /Q %TF% SETUP.INF SETUP.RPT >NUL
  76. GOTO EXIT

  77. :LOOPC
  78. CLS
  79. ECHO 请输入需要保存的 CAB 格式文件所在路径,比如 OutFile
  80. ECHO 如果此路径不存在,将在当前目录下自动创建。
  81. SET OUT=
  82. SET /P OUT=
  83. IF "%OUT%"=="" GOTO LOOPC
  84. FOR /F %%I IN ('CD') DO SET P=%%I\%Ds%
  85. SET C=%C0% /L %OUT% %P%\
  86. ECHO.
  87. FOR /F %%I IN ('dir /B %Ds%') do %C%%%I
  88. GOTO EXIT

  89. :LOOPD
  90. TITLE %TT% - 只压缩一个文件
  91. IF "%Err%"=="" (
  92. CLS
  93. )
  94. ECHO 请输入需要需要压缩的文件所在路径,比如 Driver\NV4_Disp.SYS
  95. ECHO 其中 Driver 与本程序在同一文件夹中
  96. ECHO 您也可以选择按 TAB 键快速输入路径和文件名称,完成后按回车确认
  97. SET FileR=
  98. SET /P FileR=
  99. IF "%FileR%"=="" (
  100. CLS
  101. GOTO LOOPD
  102. )
  103. IF NOT EXIST "%FileR%" (
  104. SET Err=1
  105. ECHO.
  106. CLS
  107. ECHO 您所输入的文件路径不存在,请重新输入
  108. ECHO.
  109. GOTO LOOPD
  110. )
  111. GOTO LOOPE

  112. :LOOPE
  113. CLS
  114. ECHO 请输入需要需要保存的压缩文件路径,比如 Driver\NV4_Disp.CAB
  115. ECHO 如果不输入文件路径,则以 NV4_Disp.SY_ 的形式保存在本程序所在路径
  116. ECHO.
  117. ECHO 注意:如果尝试输入一个不存在的路径信息,压缩程序会出错!
  118. SET FileT=
  119. SET /P FileT=
  120. %C0% %FileR% %FileT%
  121. GOTO EXIT

  122. :EXIT
  123. ECHO.
  124. ECHO.
  125. ECHO.
  126. ECHO 您需要的操作已经全部完成,请核查. . .
  127. ECHO.
  128. ECHO 老毛桃感谢您的使用,如果您有什么好的建议,请 QQ 我!
  129. ECHO.
  130. ECHO.
  131. ECHO 请按任意键退出程序. . .
  132. PAUSE >NUL
复制代码

[ 本帖最后由 老毛桃 于 2006-6-28 01:58 PM 编辑 ]
作者: 老毛桃    时间: 2006-6-5 10:50
原帖由 雨哭了 于 2006-6-4 17:36 发表
毛桃大哥,能不能帖一下你的这个批处理让我们看一下.

呵呵,见楼上。

原帖由 zgzxp 于 2006-6-4 08:18 发表
ECHO.
ECHO 老毛桃感谢您的使用,如果您有什么好的建议,请 QQ 我!


QQ都不写

怎么QQ你哦

6158588

呵呵,你知道的了,不想公开的,每天上 QQ 第一件事就是处理一大堆的添加消息,呵呵
作者: 雨哭了    时间: 2006-6-5 11:12
毛桃老大写的批处理之好,我辈恐怕是学不会了,网上的批处理教材都差不多,几乎出于同一人之手,而且都没有作过多的解释,学起来难啊,要是毛老大能出一部批处理教材就好了,最好能配上例子,每句都有注释就好了.有例子的容易看得出每句的功能.
作者: 老毛桃    时间: 2006-6-5 11:18
原帖由 雨哭了 于 2006-6-5 11:12 发表
毛桃老大写的批处理之好,我辈恐怕是学不会了,网上的批处理教材都差不多,几乎出于同一人之手,而且都没有作过多的解释,学起来难啊,要是毛老大能出一部批处理教材就好了,最好能配上例子,每句都有注释就好了.有例子的 ...

呵呵,言重了,批处理方面,GMY 老师和 美泰更在行,
作者: 雨哭了    时间: 2006-6-5 11:24
原帖由 老毛桃 于 2006-6-5 11:18 AM 发表

呵呵,言重了,批处理方面,GMY 老师和 美泰更在行,



看到你写的已经很棒,要是能学会象你的一样,就算烧高香了,还是弄个教材吧! 我们等着呢,GMY 老师和 美泰他们可能写的会更深,我们更学不会.象这句: FOR /F %%i in ('dir /b %Ds%') do ECHO %Ds%\%%i >>%TF%,有那么多的%符号和>>号,真迷糊了.
作者: 老毛桃    时间: 2006-6-5 13:01
原帖由 雨哭了 于 2006-6-5 11:24 发表



看到你写的已经很棒,要是能学会象你的一样,就算烧高香了,还是弄个教材吧! 我们等着呢,GMY 老师和 美泰他们可能写的会更深,我们更学不会.象这句: FOR /F %%i in ('dir /b %Ds%') do ECHO %Ds%\%%i >>% ...

呵呵,我就将这个 FOR /F %%i in ('dir /b %Ds%') do ECHO %Ds%\%%i >>%TF% 给你讲讲吧

这是一个 FOR 语句,括号中的 'dir /b %Ds%' 是指在 For 中需要运行的一个命令,如果是双引号,则是从引号中的字符串里查找,如果是单引号(就像现在)则是从命令结果中查找,如果没有引号,则是从指定文件内容中查找。

这里的 dir /b %Ds% 命令,是从我们指定的文件夹中获取文件清单信息。dir /b 是为了直接只显示文件名称,而不显示文件大小、修改日期等信息。%Ds% 是前面指定的变量,即我们输入的待压缩文件所在的文件夹名称。
ECHO %Ds%\%%i>>%TF%
这是为了将 dir /b 的每一行结果输出到预设的临时文件变量 %TF% 中,注意 >> 的用法,一个 > 是覆盖原文件 %TF% 的数据,而 >> 是另起一行添加数据到 %TF% 中。另外需要注意的是,直接运行 For 语句的话,变量 i 只要前面加一个 % 即可,而如果这个语句在批处理中,需要以 %%i 的形式表示。

[ 本帖最后由 老毛桃 于 2006-6-5 01:03 PM 编辑 ]
作者: 雨哭了    时间: 2006-6-5 14:56
呵呵,我就将这个 FOR /F %%i in ('dir /b %Ds%') do ECHO %Ds%\%%i >>%TF% 给你讲讲吧

这是一个 FOR 语句,括号中的 'dir /b %Ds%' 是指在 For 中需要运行的一个命令,如果是双引号,则是从引号中的字符串里查找,如果是单引号(就像现在)则是从命令结果中查找,如果没有引号,则是从指定文件内容中查找。

这里的 dir /b %Ds% 命令,是从我们指定的文件夹中获取文件清单信息。dir /b 是为了直接只显示文件名称,而不显示文件大小、修改日期等信息。%Ds% 是前面指定的变量,即我们输入的待压缩文件所在的文件夹名称。
ECHO %Ds%\%%i>>%TF%
这是为了将 dir /b 的每一行结果输出到预设的临时文件变量 %TF% 中,注意 >> 的用法,一个 > 是覆盖原文件 %TF% 的数据,而 >> 是另起一行添加数据到 %TF% 中。另外需要注意的是,直接运行 For 语句的话,变量 i 只要前面加一个 % 即可,而如果这个语句在批处理中,需要以 %%i 的形式表示。


谢谢!  又知道了一点点.  以后得多向你请教才是.

/F 在FOR中是什么意思?

[ 本帖最后由 雨哭了 于 2006-6-5 02:58 PM 编辑 ]
作者: 老毛桃    时间: 2006-6-5 15:24
原帖由 雨哭了 于 2006-6-5 14:56 发表


谢谢!  又知道了一点点.  以后得多向你请教才是.

/F 在FOR中是什么意思?

/F 呵呵,你说呢?

自己在命令提示符中运行 for /?,就会明白了
作者: zqjiang    时间: 2006-6-5 16:19
下了个收藏!
作者: 6618    时间: 2006-6-5 23:01
原帖由 老毛桃 于 2006-6-2 10:01 PM 发表

呵呵,接着!

找这个玩意 N 难!在 Baidu、Google、MSN 都搜索不到下载地址呢!

打包的体积 N 小,唯一比不上 QBFC 的就是不能加壳,也不能自定义图标(不过这可以借助 ResHacher 解决!)

QBFC 我早就有了,感谢老毛桃提供这个好东东。
作者: 老毛桃    时间: 2006-6-5 23:53
原帖由 6618 于 2006-6-5 23:01 发表

QBFC 我早就有了,感谢老毛桃提供这个好东东。

呵呵,将你无忧银行的钱给我,跟我买这个好东东
作者: 6618    时间: 2006-6-6 08:43
原帖由 老毛桃 于 2006-6-5 11:53 PM 发表

呵呵,将你无忧银行的钱给我,跟我买这个好东东

哈哈,我无忧银行的存款为0,是穷光蛋一个。
作者: TCLSHX    时间: 2006-6-10 23:21
原帖由 6618 于 2006-6-6 08:43 AM 发表

哈哈,我无忧银行的存款为0,是穷光蛋一个。



谦虚!
作者: wuyou001    时间: 2006-6-11 19:34
好。支持一下!
作者: yangyongwang    时间: 2006-6-11 21:05
嘿嘿,ms用类似winrar一样的cab压缩工具啊。。
作者: 老毛桃    时间: 2006-6-12 09:33
原帖由 yangyongwang 于 2006-6-11 21:05 发表
嘿嘿,ms用类似winrar一样的cab压缩工具啊。。

楼上此话好像不通啊
作者: lyrong5000    时间: 2006-8-7 10:46
昏~ 这么好的帖子,是精华帖子吧~ 强烈顶
作者: cgistar    时间: 2006-8-7 11:07
我也发表一个
用的时候解包
然后在Source下建立一个目录,将需要压缩的文件放入,压缩后的文件名就是在Source目录下起的目录名
压缩后的文件在Target在找

用法:
Make 目录名(Source下建立的目录)

[ 本帖最后由 cgistar 于 2006-8-7 11:11 AM 编辑 ]

MAKEV2.rar

35.62 KB, 下载次数: 377, 下载积分: 无忧币 -2

MAKE V2


作者: secowu    时间: 2006-8-7 13:34
分享感谢,学习下
作者: secowu    时间: 2006-8-7 14:24
老毛桃,这个注册表选项,只能对单个文件有效,如何使其对整个目录有效?
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\CAB最大压缩]

[HKEY_CLASSES_ROOT\*\shell\CAB最大压缩\command]
@="makecab /v3 /D CompressionType=LZX /D CompressionMemory=21 \"%1\""
作者: sdlws    时间: 2006-8-8 09:32
不错,
作者: 安情    时间: 2006-8-8 09:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: 安情    时间: 2006-8-8 10:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: jx673    时间: 2006-8-13 14:07
呵呵 谢谢分享
作者: chinahu    时间: 2006-8-13 21:05
很适合那些不会批处理的菜鸟
作者: icyice_cc    时间: 2006-8-15 12:43
正在找makecab最大压缩的方法,收到
作者: 老毛桃    时间: 2006-8-16 10:40
原帖由 安情 于 2006-8-8 09:54 发表
老毛讲的批处理,非常好,真是学了.能不能讲得更为详细一些,特别是for,和变量的用法和设置
能不能提供一下打包的工具"QBFC"
是不是任何一个批处理都能转换成exe文件.以上的两个QBFC和ExeScript都可以吧 ...

这个不一定的,我没有测试过,不好说 QBFC.part1.rar (500 KB, 下载次数: 1153) QBFC.part2.rar (500 KB, 下载次数: 2531) QBFC.part3.rar (108.27 KB, 下载次数: 631)

[ 本帖最后由 老毛桃 于 2006-8-16 10:42 AM 编辑 ]
作者: 老毛桃    时间: 2006-8-16 10:43
原帖由 jjiesy 于 2006-8-8 14:19 发表
压缩好的文件保存在哪里啊,我指定了也不行啊,还是找不到啊

指定的路径全名称中不可易出现空格,如果不指定,则会默认保存在 MCab.CMD 所在的文件夹中
作者: tanfb    时间: 2006-8-16 13:59
我拷,这个帖子不顶,那就太没人性了.....
作者: wlzxwfk    时间: 2006-8-19 04:44
不错的说,顶!
作者: jmm988    时间: 2006-8-19 20:17
谢谢这么好的东西!可以用来压缩WIN98  DOS启动盘下的那个压缩包吗?可以的话就太好了!我以前总是用WINRAR压缩成ZIP包,用UNPKZIP解压缩!
作者: namejm    时间: 2006-8-20 11:27
原帖由 老毛桃 于 2006-8-16 10:43 AM 发表

指定的路径全名称中不可易出现空格,如果不指定,则会默认保存在 MCab.CMD 所在的文件夹中


  老毛桃,我给你挑错来啦,呵呵:P

  
SET TF=%TEMP%\Files.tmp
IF EXIST %TF% DEL %TF% >NUL
这两句代码执行del的时候会出错,这个问题的原因和你说的“路径全名称中不可出现空格”的原因是一样的,就是你没有把路径用引号括起来。

  其实,路径的输入不一定用手工输入,直接把文件拉到批处理的窗口就可以了,此时,如果路径带空格的话,会自动用引号括起来的。要注意对引号的处理。
作者: Jacksonlee    时间: 2006-8-22 14:39
不错 支持
作者: xchao    时间: 2006-8-22 15:04
学习一下,学习一下
作者: 沙漠之子    时间: 2006-8-25 08:34
原帖由 secowu 于 2006-8-7 02:24 PM 发表
老毛桃,这个注册表选项,只能对单个文件有效,如何使其对整个目录有效?
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\CAB最大压缩]

[HKEY_CLASSES_ROOT\*\shell\CAB最大压缩\command]
@="makecab /v3 /D CompressionType=LZX /D CompressionMemory=21 \"%1\""



[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\CAB最大压缩\command]
@="makecab /v3 /D CompressionType=LZX /D CompressionMemory=21 \"%1\""
作者: 老毛桃    时间: 2006-8-25 14:13
原帖由 namejm 于 2006-8-20 11:27 发表


  老毛桃,我给你挑错来啦,呵呵:P

  这两句代码执行del的时候会出错,这个问题的原因和你说的“路径全名称中不可出现空格”的原因是一样的,就是你没有把路径用引号括起来。

  其实,路径的输入 ...

呵呵,这个是小问题了,我已经搞定了。

这是新的代码,可以应付所有的包含空格的路径、文件名和目标路径、文件名。
  1. @ECHO OFF
  2. SET TT=老毛桃制作的批量文件 CAB 打包工具
  3. SET TS=如果你输入的路径或文件名中有空格,请在外边用上引号
  4. COLOR 2F
  5. TITLE %TT%
  6. SET ERR=
  7. SET C0=MAKECAB /D CompressionType=LZX /D CompressionMemory=21 /D MaxDiskSize=CDROM /D Cabinet=ON /D Compress=ON /D FolderSizeThreshold=5000000

  8. :BEGIN
  9. CLS
  10. ECHO.
  11. ECHO        ╭══════════════════╮
  12. ECHO        ║                  ║
  13. ECHO    ╭═══┤ 老毛桃制作的批量文件 CAB 打包工具! ├═══╮
  14. ECHO    ║   ║                  ║   ║
  15. ECHO    ║   ╰══════════════════╯   ║
  16. ECHO    ║                          ║
  17. ECHO    ║   您是需要将批量文件制作成一个压缩包呢?     ║
  18. ECHO    ║   还是想生成 N 个 CAB 格式的单独压缩文件?    ║
  19. ECHO    ║                          ║
  20. ECHO    ║    [1] 将批量文件制作成一个压缩包        ║
  21. ECHO    ║    [2] 将每个文件制作成单独压缩文件       ║
  22. ECHO    ║    [3] 将单个文件制作成单独压缩文件       ║
  23. ECHO    ║    [Q] 退出                   ║
  24. ECHO    ║                          ║
  25. ECHO    ╟──────────────────────────╢
  26. ECHO    ║ 注:1. 待压缩文件的父目录需与本程序在同一路径下; ║
  27. ECHO    ║   2. 待压缩文件所在路径(包括父路径)不许有空格。 ║
  28. ECHO    ╟══════════════════════════╢
  29. ECHO    ║ 版权所有:老毛桃   供无忧朋友们交流,翻版不究 ║
  30. ECHO    ╰──────────────────────────╯
  31. ECHO.
  32. SET Choice=
  33. SET /P Choice=    请选择要进行的操作(1/2/3/Q),然后按回车:

  34. IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
  35. IF /I '%Choice%'=='1' GOTO LOOPA
  36. IF /I '%Choice%'=='2' GOTO LOOPA
  37. IF /I '%Choice%'=='3' GOTO LOOPD
  38. IF /I '%Choice%'=='Q' EXIT
  39. GOTO BEGIN

  40. :LOOPA
  41. IF /I '%Choice%'=='1' (
  42. TITLE %TT% - 制作成一个压缩包
  43. )
  44. IF /I '%Choice%'=='2' (
  45. TITLE %TT% - 制作成多个单独压缩文件
  46. )
  47. IF "%Err%"=="" (
  48. CLS
  49. )
  50. ECHO 请输入需压缩的文件所在的目录名,如 Files
  51. ECHO 注意:1.%TS%
  52. SET Ds=
  53. SET /P Ds=
  54. IF %Ds%A==A goto LOOPA
  55. IF NOT EXIST %Ds% (
  56. SET Err=1
  57. ECHO.
  58. CLS
  59. ECHO 您所输入的路径不存在,请重新输入
  60. ECHO.
  61. GOTO LOOPA
  62. )

  63. IF /I '%Choice%'=='1' GOTO LOOPB
  64. GOTO LOOPC

  65. :LOOPB
  66. CLS
  67. ECHO 请输入需要保存的压缩包文件名,如 Drive.CAB
  68. ECHO 注意:1.%TS%
  69. SET FCab=
  70. SET /P FCab=
  71. IF %FCab%A==A goto LOOPB
  72. SET C=%C0% /D DiskDirectoryTemplate=.\ /D CabinetNameTemplate=%FCab%
  73. SET TF=%TEMP%\Files.tmp
  74. IF EXIST "%TF%" DEL "%TF%" >NUL
  75. FOR %%i in (%Ds%\*.*) do ECHO "%%i" >>%TF%
  76. %C% /F %TF%
  77. DEL /F /S /Q "%TF%" SETUP.INF SETUP.RPT >NUL
  78. GOTO EXIT

  79. :LOOPC
  80. CLS
  81. ECHO 请输入需要保存的 CAB 格式文件所在路径,比如 OutFile
  82. ECHO 如果此路径不存在,将在当前目录下自动创建。
  83. ECHO 注意:1.%TS%
  84. SET OUT=
  85. SET /P OUT=
  86. IF %OUT%A==A GOTO LOOPC
  87. FOR /F "delims=" %%I IN ('CD') DO SET P=%%I
  88. FOR %%i in (%Ds%\*.*) do %C0% /L %OUT% "%P%\%%i"
  89. GOTO EXIT

  90. :LOOPD
  91. TITLE %TT% - 只压缩一个文件
  92. IF "%Err%"=="" (
  93. CLS
  94. )
  95. ECHO 请输入需要需要压缩的文件所在路径,比如 Driver\NV4_Disp.SYS
  96. ECHO 其中 Driver 与本程序在同一文件夹中
  97. ECHO 您也可以选择按 TAB 键快速输入路径和文件名称,完成后按回车确认
  98. ECHO.
  99. ECHO 注意:1.%TS%
  100. SET FileR=
  101. SET /P FileR=
  102. IF %FileR%A==A (
  103. CLS
  104. GOTO LOOPD
  105. )
  106. IF NOT EXIST %FileR% (
  107. SET Err=1
  108. ECHO.
  109. CLS
  110. ECHO 您所输入的文件路径不存在,请重新输入
  111. ECHO.
  112. GOTO LOOPD
  113. )
  114. GOTO LOOPE

  115. :LOOPE
  116. CLS
  117. ECHO 请输入需要需要保存的压缩文件路径,比如 Driver\NV4_Disp.CAB
  118. ECHO 如果不输入文件路径,则以 NV4_Disp.SY_ 的形式保存在本程序所在路径
  119. ECHO.
  120. ECHO 注意:1.如果尝试输入一个不存在的路径信息,压缩程序会出错!
  121. ECHO    2.%TS%
  122. SET FileT=
  123. SET /P FileT=
  124. %C0% %FileR% %FileT%
  125. GOTO EXIT

  126. :EXIT
  127. ECHO.
  128. ECHO.
  129. ECHO.
  130. ECHO 您需要的操作已经全部完成,请核查. . .
  131. ECHO.
  132. ECHO 老毛桃感谢您的使用,如果您有什么好的建议,请 QQ 我!
  133. ECHO.
  134. ECHO.
  135. ECHO 请按任意键退出程序. . .
  136. PAUSE >NUL
复制代码

作者: 老毛桃    时间: 2006-8-25 14:14
原帖由 沙漠之子 于 2006-8-25 08:34 发表
[quote]原帖由 secowu 于 2006-8-7 02:24 PM 发表
老毛桃,这个注册表选项,只能对单个文件有效,如何使其对整个目录有效?
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\CAB最大压缩]

[HKEY_CLASSES_ROOT\*\shell\CAB最大压缩\command]
@="makecab /v3 /D CompressionType=LZX /D CompressionMemory=21 \"%1\""



[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\CAB最大压缩\command]
@="makecab /v3 /D CompressionType=LZX /D CompressionMemory=21 \"%1\"" [/quote]
嗯,不错,其实将 Directory 改为 Drive,还可以适用于磁盘分区
作者: singel    时间: 2006-8-28 19:36
添加到右键的话就更加方便了
作者: shaoyu_ali    时间: 2006-8-28 23:29
命令行操作有时也能解决很多问题。
作者: zts59    时间: 2006-8-29 19:04
看看,如何打包多个文件成一个文件的参数。
作者: 流年转换    时间: 2006-8-29 23:16
在外面上机呢,回来下载
作者: free123456    时间: 2006-8-30 13:28
太好了
作者: erzijl    时间: 2006-9-1 09:23
强烈支持
作者: xieliuyun    时间: 2006-9-5 00:38
十分感谢,正在学习你的东西!
作者: xywsz    时间: 2006-9-5 06:56
谢谢楼主分享~~~~
作者: sdbaijiao    时间: 2006-9-5 07:40
谢谢版主.
作者: agteng    时间: 2006-9-5 10:14
厉害
作者: dglhg    时间: 2006-9-5 22:06
不错,以前我用CabMan,谢谢!
作者: agteng    时间: 2006-9-6 09:17
下载收藏
感谢先
作者: 木石前盟    时间: 2006-9-6 14:12
强!!!,不过暂时好象还用不着吧
作者: fzfwwtm    时间: 2006-9-6 14:42
收藏了先,多谢!
作者: UID    时间: 2006-9-7 10:17
强猪,支持ING
作者: 鹤冲天    时间: 2006-9-9 18:42
不顶都不行,为了互联网的共享精神喝彩!!
作者: freesoft00    时间: 2006-9-11 10:15
好的,正用的着。谢谢毛桃
作者: tanghuajin59    时间: 2006-9-11 18:47
支持了楼主!!!!谢谢分享
作者: chowyu    时间: 2006-9-21 18:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: link    时间: 2006-9-22 02:30
现在才看到,收一个,谢谢!
作者: 清风侠    时间: 2006-9-22 07:17
高人的帖!我顶
作者: boiu    时间: 2006-9-22 14:42
script_silent.pe
江民这个报毒 生成的exe也报

ps:一采用静默状态就会报.这个东西是吕达嵘汉化的汉化新世纪上有的下  ExeScript v2.1.1 汉化修正版

[ 本帖最后由 boiu 于 2006-9-22 03:26 PM 编辑 ]
作者: 老毛桃    时间: 2006-9-22 14:47
原帖由 boiu 于 2006-9-22 14:42 发表
script_silent.pe
江民这个报毒 生成的exe也报

我最看不起的就是这些国产杀软,自以为神通广大,以为自己杀毒能力如何如何,其实。。。。
作者: SHENYANFEI    时间: 2006-9-24 15:30
好东西,顶!!!
作者: hwb9091    时间: 2006-9-25 18:01
很不错的东东啊,用来试试!!
作者: xiaokang34    时间: 2006-9-25 23:59
瑞星其实也很呢个,弹出那个修改注册表的就够烦人,不知道同事怎么可以忍受。
近来不是有个类似瑞星名字的病毒(少个d的),已经把瑞星搞到启动不了。哎
作者: 麦子哥哥    时间: 2006-9-26 08:10
好东西啊
作者: bendon    时间: 2006-9-27 14:34
认真看完了所有的贴...
学会了不少东东...
作者: d590520    时间: 2006-9-27 15:40
请楼主赐教,我下载的MCab怎么才能正常使用?谢谢!

Snap1.GIF (16.5 KB, 下载次数: 146)

图片

图片

作者: sunspot2004    时间: 2006-9-27 16:10
强横  支持一下
作者: d590520    时间: 2006-9-27 16:58
原帖由 安情 于 2006-8-8 10:24 AM 发表
在xp下运行,能打开软件界面.但界面内老提示setup.inf找不到.下面 却提示成功,然而找不到压缩好的包呀,难道不能在xp下使用它吗?

我也是同样的问题,请赐教.
作者: 老毛桃    时间: 2006-9-27 22:07
原帖由 d590520 于 2006-9-27 16:58 发表

我也是同样的问题,请赐教.

这个是 Makecab 不能处理子目录造成的,Windows 自带的 Iexpress 也是这样,呵呵,我也不能脱俗,抱歉
作者: strongchen    时间: 2006-9-27 22:13
wincab可以压缩子目录,可惜在dos下解不出来的,只能在windows中用winrar解压,没什么意义。




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