无忧启动论坛
标题:
PE2.0,3.0,4.0 精简自动化测试批处理
[打印本页]
作者:
2012q891052089
时间:
2012-9-9 22:20
标题:
PE2.0,3.0,4.0 精简自动化测试批处理
根据论坛资料,反复测试虽然成功精简掉了部分文件也加快了PE载入速度。但离预期效果还是很远。如果能将 X:\Windows\system32\ 根目录下的文件精简那离预期效果会更近一步。关键是对 system32 根目录下的文件精简时会出现载入PE失败和进入PE后蓝屏。而SYSTEM32 根目录下的文件又很多有500个(不包括子目录)。如果手动测试需要6天左右的时间,还得保证效率的情况下。所以自动化测试是很有必要的。(也同样适用于其他目录下的文件,你可能需要修改一下批处理,聪明的你一定能成功)
1. 安照顺序从文件列表中读取 system32 根目录文件,每次读一个,并将其改成 *.bak 使其该文件失去作用。
2. 制作成映像文件
3. 启动VM,如果成功进入PE会在宿主机中指定位置写入一个文件作为成功标志,并且写入日志,如果在指定时间没有这个文件就视为失败,恢复这个文件,写入日志。
4. 关闭VM,然后循环这一过程
需要 WimTool 和 oscdimg,请自行下载。还需要建立文件目录结构和准备相应的工具以及文件,如果你看的懂批处理就应该知道怎么做。
@echo off
setlocal enabledelayedexpansion
title WIMLite
rem 文件夹结构说明=======================
rem 在D 盘建立 Temp 文件夹
rem D:\Temp\winpe 放制作成ISO映像所需文件
rem D:\Temp\lite 存放卸载wim 后的文件
rem =====================================
set counter=
set a=
set "kernelfile=system32filelist.log"
set "wimdst=D:\Temp\winpe\iso\sources\boot.wim"
set "wimsrc=D:\Temp\lite"
set "sysdir=D:\Temp\lite\Windows\system32"
set vmruname="D:\Program Files\VMware\VMware Workstation\vmrun.exe"
set vmfilename="D:\Backup\我的文档\My Virtual Machines\Windows Server 2003 Enterprise Edition\Windows Server 2003 Enterprise Edition.vmx"
set "flagfile=D:\Temp\hello.txt"
set "errlogfile=errfile.log"
set "sucesslogfile=sucessfile.log"
set "etfsbootfilenmae=D:\Temp\winpe\etfsboot.com"
set "sourcelication=D:\Temp\winpe\iso"
set "tragetfile=D:\Temp\winpe.iso"
rem 倒计时
set "countime=70"
rem 检查相关文件是否存在
if not exist !vmruname! (
echo !vmruname! is missing.
echo Press any key to exit.
pause >nul
goto end)
if not exist !vmfilename! (
echo !vmfilename! is missing.
echo Press any key to exit.
pause >nul
goto end)
echo 获取需要检查的文件数量
if exist !kernelfile! (
for /f "delims=" %%i in (!kernelfile!) do (set /a a+=1)
) else (
echo !kernelfile! is missing.
echo Press any key to exit.
pause >nul
goto end)
for /f "delims= " %%i in (!kernelfile!) do (
echo.
echo 1. 删除成功标志文件
if exist !flagfile! del !flagfile!
echo 2. 重命名文件 %%i
ren !sysdir!\%%i %%i.bak
rem 恢复文件
rem ren !sysdir!\%%i %%i..
set /a counter+=1
title WIMLite 正在测试的文件 %%i 这是第 !counter! 个,总共 !a! 个
if exist !wimdst! (
echo 3. 追加映卷
WimTool.EXE /Boot /Append !wimsrc! !wimdst! "MyTools"
) else (
echo 3. 制作映像
WimTool.EXE /Boot /Compress Maximum /Capture !wimsrc! !wimdst! "MyTools")
if not exist !wimdst! (
echo !wimdst! is missing.
echo Press any key to exit.
pause >nul
goto end)
echo 4. 制作成ISO文件,减少将映像文件写入U盘所占用的时间
Oscdimg.exe -n -b!etfsbootfilenmae! !sourcelication! !tragetfile!
if not exist !tragetfile! (
echo !tragetfile! is missing.
echo Press any key to exit.
pause >nul
goto end)
echo 5. 启动虚拟机测试
!vmruname! start !vmfilename!
echo 6. 开始计时,必须在 !countime! 秒内写入成功标志,否则视为失败。
ping -n !countime! 127.0.0.1 >nul
rem 判断此文件删除是否会影响 PE 正常运行
if exist !flagfile! (
echo 7. %%i 可以删除,写入可以删除日志
echo %%i >>!sucesslogfile!
) else (
echo 7. %%i 不能删除,正在恢复文件 %%i,写入不能删除日志
ren !sysdir!\%%i.bak %%i
echo %%i >>!errlogfile!
)
rem echo 这里暂停一下,检查相关文件,检测批处理是否按照预期运作
rem pause
echo 8. 关闭虚拟机为下一次测试做好准备
!vmruname! stop !vmfilename!
)
rem 如果有错误产生就暂停,方便查看故障原因
if %errorlevel%==1 pause
:end
exit
复制代码
欢迎转载,但请注明。谢谢!
作者:
eyinhe
时间:
2012-9-9 22:39
这效率是相当的低啊!
作者:
2012mayi
时间:
2012-9-10 10:03
谢谢分享的文章,效率高低无所谓,分享第一!
作者:
2012q891052089
时间:
2012-9-10 12:20
标题:
回复 #2 eyinhe 的帖子
欢迎赐教。笨方法完全不参考别人已有的文件情况下完成。独立完成减少分析的工作量。当然也有别人已经精简好了的作品,只要拿过来直接就可以用,但就失去了自己研究的意义。
作者:
xhwfq
时间:
2012-9-10 12:31
不如用robocopy,能节约90%以上的时间.
作者:
ramos
时间:
2012-9-10 12:49
你参考下pe3.1的白皮书。dism有个参数可以记录载入系统用到哪些文件。
作者:
2012q891052089
时间:
2012-9-10 13:02
标题:
回复 #5 xhwfq 的帖子
robocopy 只是完成复杂复制,并不能检查哪些文件能删除,哪些文件不能删除。
作者:
xhwfq
时间:
2012-9-10 13:22
标题:
回复 #7 2012q891052089 的帖子
只要用robocopy将启动以后被调用过的文件复制出来就行了.
作者:
2012q891052089
时间:
2012-9-10 13:35
标题:
回复 #8 xhwfq 的帖子
问题是,哪些文件被调用过!谢谢!
作者:
xhwfq
时间:
2012-9-10 13:39
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=160859
作者:
2012q891052089
时间:
2012-9-10 13:45
标题:
回复 #10 xhwfq 的帖子
非常感谢,这确实是个好方法。根据文件访问时间来确认系统调用了那些文件。
作者:
2012q891052089
时间:
2012-9-10 13:47
标题:
回复 #6 ramos 的帖子
你好,我看了一下 DISM 有个参数可以查看载入了那些映像,但没有看到可以记录载入系统用到哪些文件。谢谢!
作者:
2012q891052089
时间:
2012-9-11 18:41
标题:
回复 #10 xhwfq 的帖子
经过测试,此方法并没有达到预期的效果,因为访问时间需要载入PE之后才能生效。所以 failed..
欢迎光临 无忧启动论坛 (http://wuyou.net/)
Powered by Discuz! X3.3