|
原文出自: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, 下载次数: 1300)
( 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)- @echo off
- setlocal enableextensions
- setlocal enabledelayedexpansion
- set f=txtsetup.sif
- set fn=temp.sif
- set fb=txtsetup.bak
- set fl=lite.txt
- set fe=error.txt
- set lite=
- if not exist %f% goto error1
- title TSLite V0.9 by NicTense
- mode con cols=90 lines=30
- echo.
- echo TXTSETUP.SIF 一键减肥批处理 V0.9
- echo.
- echo Nictense 写于 2010.04.29
- echo.
- :loop1
- set /p LiteSDF=是否处理[SourceDisksFiles]段(Y/N):
- if /i "%LiteSDF%" neq "Y" if /i "%LiteSDF%" neq "N" goto loop1
- for %%a in (%fn% %fl% %fe%) do if exist %%a del /q %%a >nul
- echo.&echo 正在精简!f!,请稍候...
- echo.
- for /f "tokens=*" %%a in (%f%) do (
- set t=%%a
- set t=!t: =!
- if "!t:~0,1!"=="[" set item=!t!
- if /i "!item!"=="[HardwareIdsDatabase]" (
- for /f "tokens=1 delims=;" %%b in ("!t!") do set t=%%b
- set t1=
- set t2=
- set t3=
- set t4=
- set y=
- for /f "tokens=1,* delims==" %%c in ("!t!") do (
- set driver=%%d
- set driver=!driver:"=""!
- set s=%%c
- for /f "tokens=1,2,3,4 delims=&" %%i in ("!s!") do (
- set t1=%%i
- if not "%%j"=="" set t2=%%i^&%%j
- if not "%%k"=="" set t3=%%i^&%%j^&%%k
- set t4=%%l
- )
- )
- if not "!t!"=="[HardwareIdsDatabase]" (
- if not "!t2!"=="" find /i "!t1!=!driver!" !f! >nul && set y=y
- if "!y!"=="" if not "!t3!"=="" find /i "!t2!=!driver!" !f! >nul && set y=y
- if "!y!"=="" if not "!t4!"=="" find /i "!t3!=!driver!" !f! >nul && set y=y
- if "!y!"=="" find /i "!s!=!driver!" !fn! >nul && set y=y
- )
- if "!y!"=="" (
- find /i "!s!=" !fn! >nul && echo %%a>>!fe! && set y=e
- if "!y!"=="" echo %%a>>!fn!
- ) else echo 删除行 %%a & set "lite=y" & echo %%a>>!fl!
- ) else (
- if /i "%LiteSDF%"=="Y" (
- if "!item!"=="[SourceDisksFiles]" (
- if "!t!"=="[SourceDisksFiles]" (
- echo [SourceDisksFiles]>>!fn!
- echo c_936.nls=100,,,,,,,2,0,0,,1,2 >>!fn!
- echo kdcom.dll=100,,,,,,,2,0,0,,1,2 >>!fn!
- echo ntdll.dll=100,,,,,,,2,0,0,,1,2 >>!fn!
- echo ntoskrnl.exe=100,,,,,,,2,0,0,,1,2 >>!fn!
- echo setupreg.hiv=100,,,,,,,2,0,0,,1,2 >>!fn!
- echo vgaoem.fon=100,,,,,,,2,0,0,,1,2 >>!fn!
- set lite=s
- echo [SourceDisksFiles]段处理完毕!&echo.
- )
- ) else echo %%a>>!fn!
- ) else echo %%a>>!fn!
- )
- )
- if "%Lite%"=="" (
- echo 该文件不需要精简!
- del /q %fn% >nul
- ) else (
- echo.
- echo 完成!原文件已备份为 %fb%
- if "%Lite%"=="y" echo.&echo 精简部分(不包括[SourceDisksFiles]段)已保存为 %fl%
- move /y %f% %fb% >nul
- move /y %fn% %f% >nul
- )
- if exist %fe% echo.&echo 一些错误需要手工处理,具体请查看 %fe% 文件
- goto end
- :error1
- echo 找不到文件 %f%
- :end
- echo.
- echo 按任意键退出!
- 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 编辑 ] |
评分
-
查看全部评分
|