无忧启动论坛

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

【原创】TXTSETUP.SIF减肥和检查错误批处理TSLite V0.9(4月29日更新)

[复制链接]
跳转到指定楼层
1#
发表于 2010-3-10 14:53:08 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
原文出自:http://hi.baidu.com/nictense/blog/item/585b9f09369efbda62d986fc.html (更新版将第一时间于该地址公布)

下版考虑增加3个功能:1、增加行标准格式化处理 2、可选删除注释 3、对[SourceDisksFiles]段多余行的处理(0.9已实现)

更新记录:

4月29日:增加对[SourceDisksFiles]段的处理,同时修正0.8Beta版的一个Bug,因优先级问题,原来对包含CC_段的HWID的精简算法有误,可能会导致个别IDE硬盘找不到硬盘。

3月22日:V0.85 Specail 应zhaohj要求,在V0.8Beta的基础上增加自动合并SUBSYS项功能,可以进一步增强减肥效果,但合并后所有子ID都会被指定使用同一驱动,这对某些特殊型号可能会导致未知错误,故此版定为特殊版,用户可根据自身需要选用。 (暂时取消此版下载)

3月20日:V0.8Beta 进一步改善逻辑重复算法,新版可以查出所有逻辑重复项。另增加对同一HWID指定多个驱动的错误的判断。

3月11日:V0.7Beta 更新了一下代码,对逻辑重复的判断更为全面。


正文:

在反复添加磁盘等驱动后,txtsetup.sif文件很容易变得越来越臃肿,重复和错误在所难免

这个批处理就是为了解决这个问题的,可以自动将重复和逻辑重复的行精简掉

并将精简掉的内容另存为lite.txt,以便查对。

0429以后版本增加对[SourceDisksFiles]段的处理,可以精简掉该段没用的项目,对缺失的则自动补齐必要的信息。

将批处理和txtsetup.sif文件放到同一个目录,并执行批处理即可

下载: tslite.rar (1.02 KB, 下载次数: 1303) ( V0.9,解压密码:www.147.cn )

本工具为无损精简,仅删除多余的语句,不必担心会产生什么不良的后果。

另,如果同一个hwid被指定了2个或以上的驱动,本工具还会找出该错误,并保存到error.txt中,该错误需要手工处理,决定保留其中哪一项。

目前仅处理[HardwareIdsDatabase]部分(主要重复的也就是这部分),有空再加入其他部分的处理


V0.8 实测效果:

我心如水_SERVER_2003_PE_V13.22_维护版

减肥前:97k,减肥后:91k,删除多余行:94行,减肥效果6K

我心如水_XP_PE_V13.22

减肥前:109k,减肥后:87k,删除多余行:350行,减肥效果22k

天琴星座090226龙抬头版

减肥前:108k,减肥后:86kb,删除多余行:339行,减肥效果22K

注:N版原版方案中也有逻辑重复项,不过很少


源代码如下:( TSLite V0.9)
  1. @echo off
  2. setlocal enableextensions
  3. setlocal enabledelayedexpansion
  4. set f=txtsetup.sif
  5. set fn=temp.sif
  6. set fb=txtsetup.bak
  7. set fl=lite.txt
  8. set fe=error.txt
  9. set lite=
  10. if not exist %f% goto error1
  11. title TSLite V0.9 by NicTense
  12. mode con cols=90 lines=30
  13. echo.
  14. echo                             TXTSETUP.SIF 一键减肥批处理 V0.9
  15. echo.
  16. echo                                 Nictense 写于 2010.04.29
  17. echo.
  18. :loop1
  19. set /p LiteSDF=是否处理[SourceDisksFiles]段(Y/N):
  20. if /i "%LiteSDF%" neq "Y" if /i "%LiteSDF%" neq "N" goto loop1
  21. for %%a in (%fn% %fl% %fe%) do if exist %%a del /q %%a >nul
  22. echo.&echo 正在精简!f!,请稍候...
  23. echo.
  24. for /f "tokens=*" %%a in (%f%) do (
  25. set t=%%a
  26. set t=!t: =!
  27. if "!t:~0,1!"=="[" set item=!t!
  28. if /i "!item!"=="[HardwareIdsDatabase]" (
  29. for /f "tokens=1 delims=;" %%b in ("!t!") do set t=%%b
  30. set t1=
  31. set t2=
  32. set t3=
  33. set t4=
  34. set y=
  35. for /f "tokens=1,* delims==" %%c in ("!t!") do (
  36. set driver=%%d
  37. set driver=!driver:"=""!
  38. set s=%%c
  39. for /f "tokens=1,2,3,4 delims=&" %%i in ("!s!") do (
  40. set t1=%%i
  41. if not "%%j"=="" set t2=%%i^&%%j
  42. if not "%%k"=="" set t3=%%i^&%%j^&%%k
  43. set t4=%%l
  44. )
  45. )
  46. if not "!t!"=="[HardwareIdsDatabase]" (
  47. if not "!t2!"=="" find /i "!t1!=!driver!" !f! >nul && set y=y
  48. if "!y!"=="" if not "!t3!"=="" find /i "!t2!=!driver!" !f! >nul && set y=y
  49. if "!y!"=="" if not "!t4!"=="" find /i "!t3!=!driver!" !f! >nul && set y=y
  50. if "!y!"=="" find /i "!s!=!driver!" !fn! >nul && set y=y
  51. )
  52. if "!y!"=="" (
  53. find /i "!s!=" !fn! >nul && echo %%a>>!fe! && set y=e
  54. if "!y!"=="" echo %%a>>!fn!
  55. ) else echo 删除行 %%a & set "lite=y" & echo %%a>>!fl!
  56. ) else (
  57. if /i "%LiteSDF%"=="Y" (
  58. if "!item!"=="[SourceDisksFiles]" (
  59. if "!t!"=="[SourceDisksFiles]" (
  60. echo [SourceDisksFiles]>>!fn!
  61. echo c_936.nls=100,,,,,,,2,0,0,,1,2 >>!fn!
  62. echo kdcom.dll=100,,,,,,,2,0,0,,1,2 >>!fn!
  63. echo ntdll.dll=100,,,,,,,2,0,0,,1,2 >>!fn!
  64. echo ntoskrnl.exe=100,,,,,,,2,0,0,,1,2 >>!fn!
  65. echo setupreg.hiv=100,,,,,,,2,0,0,,1,2 >>!fn!
  66. echo vgaoem.fon=100,,,,,,,2,0,0,,1,2 >>!fn!
  67. set lite=s
  68. echo [SourceDisksFiles]段处理完毕!&echo.
  69. )
  70. ) else echo %%a>>!fn!
  71. ) else echo %%a>>!fn!
  72. )
  73. )
  74. if "%Lite%"=="" (
  75. echo 该文件不需要精简!
  76. del /q %fn% >nul
  77. ) else (
  78. echo.
  79. echo 完成!原文件已备份为 %fb%
  80. if "%Lite%"=="y" echo.&echo 精简部分(不包括[SourceDisksFiles]段)已保存为 %fl%
  81. move /y %f% %fb% >nul
  82. move /y %fn% %f% >nul
  83. )
  84. if exist %fe% echo.&echo 一些错误需要手工处理,具体请查看 %fe% 文件
  85. goto end
  86. :error1
  87. echo 找不到文件 %f%
  88. :end
  89. echo.
  90. echo 按任意键退出!
  91. pause>nul
复制代码
本人近期发布帖子汇总,方便查询

【下载】Tango WinPE 2010 虎年珍藏版,32M新版XP3内核PE

【原创】为你的PE系统添加计算机型号和CPU识别功能

【原创】TXTSETUP.SIF减肥和检查错误批处理TSLite

【原创】玩转PE墙纸(开机随机显示墙纸+一键切换循环显示)

【下载】通用型PE一键美化工具PEBeautify+TangoPE美化包(PE美化,只需10秒)

【分享】利用PECMD和MSPAINT实现零体积一键截图功能

【原创】shell32.dll的终极精简&美化教程 (这个是很久前的了)

[ 本帖最后由 NicTense 于 2010-4-29 19:10 编辑 ]

评分

参与人数 2无忧币 +20 收起 理由
66369 + 10 精品文章
北斗 + 10 原创内容

查看全部评分

132#
发表于 2013-6-5 13:34:19 | 只看该作者
测试一下
回复

使用道具 举报

131#
发表于 2010-12-15 21:07:00 | 只看该作者
留着备用,需要测试一下
回复

使用道具 举报

130#
发表于 2010-12-15 18:02:16 | 只看该作者

BUG

运行时,速度实在是太慢了!
回复

使用道具 举报

129#
发表于 2010-4-30 16:04:52 | 只看该作者
如果单是CC_段,全都放在最后,但这种情况一般是ide,ahci,raid混合,不多的。

驱动的匹配顺序还有点迷茫,楼主既然知道8种格式,解释一下优先匹配顺序吧。
回复

使用道具 举报

128#
发表于 2010-4-30 12:30:49 | 只看该作者
好东西啊   高手  支持支持
回复

使用道具 举报

127#
 楼主| 发表于 2010-4-30 11:50:27 | 只看该作者
原帖由 zhaohj 于 2010-4-30 11:06 发表
0.9测试了一下,确实解决了以前版本中的问题。
但减肥效果也打折了。有些看来得手动。
DOS版能这样就不错了。

制作新版建议,比如A、B、C有相同的PCI\VEN_XXXX&DEV_YYYY,就要计算ABC哪个ID行最多,最多的 ...


嗯,只要不是批处理,这些就没问题
这个功能如果用批处理,可以实现,但是会使整个过程增加几分钟,而如果用编程软件,基本上不影响时间,即使用asp都不会这样

不过可能要过阵子了,有时间我就弄一下

那个HWID的问题,可以不用手工,要精确地判段,把那些容易出问题的比如CC_段也精简的话,需要对这些ID判断最多8种情况

这个批处理是吃不消的,太慢了,只能等下版有空用pb来弄了

但是像CC_段有个问题,即使判断8种格式确定没问题了,还是会影响扩展性,因为那是个越级的精简,即使当时精简后没问题,但是之后加入新的ID,里面出现程咬金的话,还是会出问题

所以凡是 CC_段的,其实都不建议越级精简(即用只有CC_一段的来替代,优先级太低了,8种情况排第8,只有前面7种都没有指定驱动才会被用到,但是有些公司偏偏喜欢把ide,ahci,raid等都用一样的主id

[ 本帖最后由 NicTense 于 2010-4-30 11:51 编辑 ]
回复

使用道具 举报

126#
发表于 2010-4-30 11:06:36 | 只看该作者
0.9测试了一下,确实解决了以前版本中的问题。
但减肥效果也打折了。有些看来得手动。
DOS版能这样就不错了。

制作新版建议,比如A、B、C有相同的PCI\VEN_XXXX&DEV_YYYY,就要计算ABC哪个ID行最多,最多的删除SUBSYS并合并。
回复

使用道具 举报

125#
发表于 2010-4-29 17:23:06 | 只看该作者
原帖由 NicTense 于 2010-4-29 11:21 发表


[SourceDisksFiles]需要保留6行,要不改成非ramdisk会出错,这6行删除了得不偿失
如果加上这个功能可以提速,而不会减速,批处理版可以直接处理

但是只保留[HardwareIdsDatabase],[SCSI],[SCSI.LOAD] ...


这样也好,我外置SRS就方便了,内置版还是需要保留的。
回复

使用道具 举报

124#
 楼主| 发表于 2010-4-29 11:21:51 | 只看该作者
原帖由 zhaohj 于 2010-4-29 11:06 发表
[SourceDisksFiles]也精简一下,只保留有用的。

驱动外置的话,[SourceDisksFiles]可以全删除,只要[HardwareIdsDatabase],[SCSI],[SCSI.LOAD]


[SourceDisksFiles]需要保留6行,要不改成非ramdisk会出错,这6行删除了得不偿失
如果加上这个功能可以提速,而不会减速,批处理版可以直接处理

但是只保留[HardwareIdsDatabase],[SCSI],[SCSI.LOAD] 这几个字段应该不行的吧 文件系统,bus层那些,包括那些files.xxx的不需要的吗

如果这样的话,我可以增加一个功能,判断如果存在 reserveditem.ini 文件的话,则只保留里面指定的段,否则不删除任何段,只做无损精简
回复

使用道具 举报

123#
发表于 2010-4-29 11:06:53 | 只看该作者
[SourceDisksFiles]也精简一下,只保留有用的。

驱动外置的话,[SourceDisksFiles]可以全删除,只要[HardwareIdsDatabase],[SCSI],[SCSI.LOAD]

[ 本帖最后由 zhaohj 于 2010-4-29 11:10 编辑 ]
回复

使用道具 举报

122#
 楼主| 发表于 2010-4-29 10:57:55 | 只看该作者
原帖由 zhaohj 于 2010-4-29 10:55 发表
精简TXTSETUP.SIF,进展如何?
一直想找一个INIFILE的替代品,找不到啊。64KB的限制,外置驱动都得精简。


最近仔细研究了一下hwid的构成和优先关系之后发现

上版的算法,有些地方有点问题,这两天抽空先修改一下这个批处理,把可能出问题的部分先处理了

因为有个这样的问题存在

比如说存在A,B,C三个hwid(包含子ID)

假设 A可以替代C,本来精简掉C是没问题的,但问题就在于,如果同一个硬件,兼容ID里面既有B,又有A,那么问题就来了,如果B优先级比A高,那么A就是没用的了

上版只考虑两者的兼容关系,没有考虑程咬金的问题。。。考虑这个之后得出的结论就是CC_段由于优先级很低,最好是不精简,本身这部分也不多


但是如果要精准精简,就是确保没用的一个不留,删掉的也不会导致任何问题的话

需要判断8种情况的优先顺序,也就是对每个hwid,要判断8种情况,这个批处理有点吃不消,下次有用再改用powerbasic来处理了

[ 本帖最后由 NicTense 于 2010-4-29 11:01 编辑 ]
回复

使用道具 举报

121#
发表于 2010-4-29 10:55:07 | 只看该作者
精简TXTSETUP.SIF,进展如何?
一直想找一个INIFILE的替代品,找不到啊。64KB的限制,外置驱动都得精简。
回复

使用道具 举报

120#
 楼主| 发表于 2010-4-4 00:32:45 | 只看该作者
原帖由 freesoft00 于 2010-4-4 00:27 发表
ram的启动后不占硬盘,可以格式化,要不锁定不让格式化。U盘的话也可以启动后拔掉U盘。


这个应该是img格式才可能存在的情况吧,貌似跟ram/非ram没关系
回复

使用道具 举报

119#
发表于 2010-4-4 00:27:54 | 只看该作者
ram的启动后不占硬盘,可以格式化,要不锁定不让格式化。U盘的话也可以启动后拔掉U盘。
回复

使用道具 举报

118#
 楼主| 发表于 2010-4-3 23:35:08 | 只看该作者
原帖由 zhaohj 于 2010-4-3 23:31 发表


ram方式速度快,非ram小内存机器用。比如64M、128M的机器。


快吗?usb1.0的话,加载ramdisk镜像在时间上是大头,所以速度主要取决于镜像大小

但是现在的usb加载很快的,硬盘更快,ram体积小,load镜像快,但是需要多解压一次,这个应该也要时间,改天有空我测试一下,如果在硬盘的话,哪个快

除了这个之外,还有没有其他原因导致从最初的非ram到后来多数用ram呢,比如兼容性之类的

[ 本帖最后由 NicTense 于 2010-4-3 23:36 编辑 ]
回复

使用道具 举报

117#
发表于 2010-4-3 23:31:17 | 只看该作者
原帖由 NicTense 于 2010-4-3 21:46 发表
呵呵,制作第一层iso的时候直接把NTDETECT.COM、SETUPLDR.BIN复制到wxpe目录下就非ram了
启动成功

有个问题一直没弄清楚

弄成ram方式除了能将最终iso弄小以外,还有没有其他的好处


ram方式速度快,非ram小内存机器用。比如64M、128M的机器。
回复

使用道具 举报

116#
 楼主| 发表于 2010-4-3 21:46:26 | 只看该作者
呵呵,制作第一层iso的时候直接把NTDETECT.COM、SETUPLDR.BIN复制到wxpe目录下就非ram了
启动成功

有个问题一直没弄清楚

弄成ram方式除了能将最终iso弄小以外,还有没有其他的好处
回复

使用道具 举报

115#
 楼主| 发表于 2010-4-2 09:39:16 | 只看该作者
原帖由 dvd008 于 2010-4-2 08:25 发表
可以,如果没有,先提示ntoskrnl.exe

改造很简单,多几百k即可

光盘非ram修改方法:
UltraISO打开iso提取引导文件保存为pe.bif
winpe.is_用winrar 解压得到winpe.iso.
用UltraISO打开winpe.iso,加载pe ...


不是,我只要确定那份名单对不对,看样子是对的,就是那几个,一个不差.谢了
回复

使用道具 举报

114#
发表于 2010-4-2 08:25:34 | 只看该作者
可以,如果没有,先提示ntoskrnl.exe

改造很简单,多几百k即可

光盘非ram修改方法:
UltraISO打开iso提取引导文件保存为pe.bif
winpe.is_用winrar 解压得到winpe.iso.
用UltraISO打开winpe.iso,加载pe.bif为引导文件,把wxpe目录下NTDETECT.COM、SETUPLDR.BIN添加到winpe.iso的wxpe目录下
添加“外置程序”目录到光盘根目录。
TXTSETUP.SI_ 的修改:
winrar解压,记事本打开,新加入
[Version]
signature="$Windows NT$"
ClassGUID={00000000-0000-0000-0000-000000000000}
后面新加入:
[SourceDisksNames]
1="Windows xxx",\WXPE\TXTSETUP.SIF,,\
100="Windows xxx ",\WXPE\TXTSETUP.SIF,,\,1

[SourceDisksFiles]   保留
C_936.NLs=100,,,,,,,2,0,0,,1,2
KDCOM.DLL=100,,,,,,,2,0,0,,1,2
NTDLL.DLL=100,,,,,,,2,0,0,,1,2
NTOSKRNL.EXe=100,,,,,,,2,0,0,,1,2
SETUPREG.HIv=100,,,,,,,2,0,0,,1,2
VGAOEM.FOn=100,,,,,,,2,0,0,,1,2


硬盘直接复制已经支持的光盘版wxpe目录
硬盘启动,移动硬盘,hdd的u盘:
1、经装好xp,2003的就不用了,否则用 bootsect 写入 nt52
2、如果是空硬盘,winpe.is_用winrar压,copy“ntdetect.com”到
    c盘,copy“setupldr.bin”为“ntldr”到c盘。
3、把WXPE文件夹复制到C盘根目录下,重命名为minint,
    直接启动进入 pe 。
4、如果现有xp或win2003,vista,win2008,win7系统下
    winpe.is_用winrar压,虚拟光驱加载 winpe.iso,
    把WXPE文件夹复制到C盘根目录下,重命名为minint,
    复制:下列文件到 C 盘根目录
    AVLDR.xpe              
    Boot.ini                  
    bootfont.bin              
    Ntdetect.com            
    Ntldr  
    LDRXPE(由 WXPE 文件夹下的 SETUPLDR.BIN 改名而来)
BOOT.INI,增加  C:\Avldr.xpe="WinPE" ,重新启动
   
[Boot Loader]
Timeout=10
Default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[Operating Systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
C:\Avldr.xpe="WinPE"
回复

使用道具 举报

113#
 楼主| 发表于 2010-4-1 22:19:36 | 只看该作者
原帖由 dvd008 于 2010-4-1 20:58 发表
非ram 需要保留几个文件, 都删除,启动时会提示,
最后找到需要的几个即可。已经测试,可以正常启动


c_936.nls=100,,,,,,,2,0,0,,1,2
kdcom.dll=100,,,,,,,2,0,0,,1,2
ntdll.dll=100,,,,,,,2,0,0,,1,2
ntoskrnl.exe=100,,,,,,,2,0,0,,1,2
setupreg.hiv=100,,,,,,,2,0,0,,1,2
vgaoem.fon=100,,,,,,,2,0,0,,1,2

跟这个列表是否有出入,如有出入,方便的话贴一下确定的名单,我没有非ram的pe,懒得重新弄一个去测试
回复

使用道具 举报

112#
发表于 2010-4-1 20:58:31 | 只看该作者
非ram 需要保留几个文件, 都删除,启动时会提示,
最后找到需要的几个即可。已经测试,可以正常启动
回复

使用道具 举报

111#
发表于 2010-4-1 13:20:37 | 只看该作者

回复 #109 NicTense 的帖子

你有没有试过非RAM方式?如果是RAM方式,就算把[SourceDisksFiles]全删了估计都没问题。
回复

使用道具 举报

110#
发表于 2010-4-1 12:54:36 | 只看该作者
那部分内容是给安装版的

pe下,东西放哪就在哪,不需要这么复制的

另外,我的2003原版就是 drv目录
watchdog.sys = 1,,,,,,4_,4,0,0,,1,4
回复

使用道具 举报

109#
发表于 2010-4-1 12:52:56 | 只看该作者
最后总结一下格式
filename=SP,,size,,,,sdisklab,tag,[sdisksn],sdir,upcode,instlcode,,diskidentifier,ddir
SP:1=原版,100=SP版
size:文件大小,可以放空缺省
sdisklab:源盘卷标
tag:源盘TAG文件名
sdisksn:源盘系列号,目前未用,直接填0或者放空缺省
***上面三个通常用一个数字表示
sdir:源路径
upcode:升级代码
instcode:新装代码
***以上两个DVD008详细解释过,可以放空缺省
diskidentifier:逻辑盘标识码,通常为1
ddir:目标路径

[ 本帖最后由 netwinxp 于 2010-4-1 14:34 编辑 ]
回复

使用道具 举报

108#
 楼主| 发表于 2010-4-1 12:44:16 | 只看该作者
原帖由 netwinxp 于 2010-4-1 12:41 发表
watchdog有用,而且1,,,,,,,2,0,0,,,1,2的写法不是老毛桃改错的,原版PE就是这样写的。


问题是,原版的这个文件在 system32 目录下,这样写是对的

而pe,基本上都放在了 drivers 目录下,这样写,就是错的,错的却不影响结果,所以我怀疑真的如dvd008所说,压根就不起作用
回复

使用道具 举报

107#
发表于 2010-4-1 12:41:53 | 只看该作者
又一位隐藏的P高手~~严重收藏
回复

使用道具 举报

106#
 楼主| 发表于 2010-4-1 12:41:25 | 只看该作者
原帖由 dvd008 于 2010-4-1 12:32 发表
我也遇到过,可能因为 hiv里面有注册信息

SourceDisksFiles] 段内容 pe没有用到,因为
drv和里面的文件已经在目标目录了

watchdog.sys我以前尝试删除,结果蓝屏

drv有些文件txtsetup里面并没有什么, ...


赞同这个观点

实际测试结果,改为

watchdog.sys=100,,,,,,_4,2,0,0,,1,2

之后

watchdog.sys文件依然只存在于drivers目录下,并没有出现在system32目录中

也就是说,最后2个数字指定目标目录并不生效

所以我很怀疑,PE的 [SourceDisksFiles] 字段可能真的是基本上没有用的,写那么多估计都白写了
回复

使用道具 举报

105#
发表于 2010-4-1 12:41:12 | 只看该作者

回复 #103 NicTense 的帖子

watchdog有用,而且1,,,,,,,2,0,0,,,1,2的写法不是老毛桃改错的,原版XP就是这样写的。

[ 本帖最后由 netwinxp 于 2010-4-1 13:23 编辑 ]
回复

使用道具 举报

104#
发表于 2010-4-1 12:32:38 | 只看该作者
我也遇到过,可能因为 hiv里面有注册信息

SourceDisksFiles] 段内容 pe没有用到,因为
drv和里面的文件已经在目标目录了

watchdog.sys我以前尝试删除,结果蓝屏

drv有些文件txtsetup里面并没有什么,但是却需要
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-8-17 14:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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