无忧启动论坛

标题: 求高手解答:PE怎样自动搜索挂载WIM并引导main.ini? [打印本页]

作者: 2011dyzyb    时间: 2012-7-30 21:56
标题: 求高手解答:PE怎样自动搜索挂载WIM并引导main.ini?
现在有不少PE可以自动搜索挂载WIM并引导main.ini生成开始菜单,如网虫2008 W7 PE,但一直搞不清PE究竟怎样才能实现可以自动搜索挂载WIM并引导main.ini生成开始菜单,而不是那种双击挂载或右键挂载,求高手指点。我是个菜鸟,请高手讲祥细一点,谢谢!
作者: spadek    时间: 2012-7-31 08:13
网虫2008确实是高手,他的步步为营功能强大,仔细研究下就能学到很多。

下面是参照步步为营的PECMD2012用法。

//创建Y盘并挂载WIMFILE目录WIM文件
_SUB RamdY
RAMD ImDisk,L64,NTFS,Y:,PeTools
WAIT 500
FORX !\BOOT\BOOT.WIM,&&BOOTP,1,FDRV &&BOOTN=%&BOOTP%
FORX %&BOOTN%\WIMFILE\*.WIM,&&WIMP,0,TEAM NAME &&WIMN=%&WIMP%|PATH Y:\%&WIMN%\%&WIMN%|MOUN %&WIMP%,Y:\%&WIMN%\%&WIMN%|IFEX Y:\%&WIMN%\MAIN.INI,LOAD Y:\%&WIMN%\MAIN.INI
_END


双击挂载的注册表,原理和上面相同。
;关联WIM
[HKEY_CLASSES_ROOT\7-Zip.wim\shell\open\command]
@="PECMD TEAM ENVI &&WIMP=%1|NAME &&WIMN=%%&WIMP%%|PATH Y:\\%%&WIMN%%\\%%&WIMN%%|MOUN %%&WIMP%%,Y:\\%%&WIMN%%\\%%&WIMN%%|IFEX Y:\\%%&WIMN%%\\MAIN.INI,LOAD Y:\\%%&WIMN%%\\MAIN.INI|EXEC EXPLORER Y:\\%%&WIMN%%"


原理就是先创建Y盘,然后创建两级目录,接着挂载并加载main.ini。双击挂载同理。
相关命令请参考PECMD2012帮助,如想知道变量是何值,可以用mess逐个查看。

[ 本帖最后由 info 于 2012-7-31 08:17 编辑 ]
作者: 2012yincheng137    时间: 2012-7-31 08:44
学习了。。。。。。。。。。。。。。。。
作者: 2011dyzyb    时间: 2012-7-31 14:16
原帖由 info 于 2012-7-31 08:13 发表
网虫2008确实是高手,他的步步为营功能强大,仔细研究下就能学到很多。

下面是参照步步为营的PECMD2012用法。

//创建Y盘并挂载WIMFILE目录WIM文件
_SUB RamdY
RAMD ImDisk,L64,NTFS,Y:,PeTools
WAIT 5 ...


还是不能挂载。
我把您写的下面就段添加到PECMD.INI中,重新压缩成BOOT.WIM,将含有WIM的WIMFILE文件夹放在光盘根目录(或BOOT中),启动Win7PE后没有挂载WIM,
-------------------------------------
//创建Y盘并挂载WIMFILE目录WIM文件【添加这段您写的】
_SUB RamdY
RAMD ImDisk,L64,NTFS,Y:,PeTools
WAIT 500
FORX !\BOOT\BOOT.WIM,&&BOOTP,1,FDRV &&BOOTN=%&BOOTP%
FORX %&BOOTN%\WIMFILE\*.WIM,&&WIMP,0,TEAM NAME &&WIMN=%&WIMP%|PATH Y:\%&WIMN%\%&WIMN%|MOUN %&WIMP%,Y:\%&WIMN%\%&WIMN%|IFEX Y:\%&WIMN%\MAIN.INI,LOAD Y:\%&WIMN%\MAIN.INI
_END
-------------------------------------
有趣的是,PECMD.INI中原来就有RAMD ImDisk,L64,NTFS,Y:,PeTools,写法是:
------------------------------------
WAIT 300
RAMD ImDisk,L64,NTFS,Y:,PeTools
NUMK 0
EXEC !=NUMLOCK.EXE
------------------------------------
我去掉您写的RAMD ImDisk,L64,NTFS,Y:,PeTools,保留原来的,就可以挂载Y:,PeTools(如下)
------------------------------------
_SUB RamdY
WAIT 500
FORX !\BOOT\BOOT.WIM,&&BOOTP,1,FDRV &&BOOTN=%&BOOTP%
FORX %&BOOTN%\WIMFILE\*.WIM,&&WIMP,0,TEAM NAME &&WIMN=%&WIMP%|PATH Y:\%&WIMN%\%&WIMN%|MOUN %&WIMP%,Y:\%&WIMN%\%&WIMN%|IFEX Y:\%&WIMN%\MAIN.INI,LOAD Y:\%&WIMN%\MAIN.INI
_END


WAIT 300
RAMD ImDisk,L64,NTFS,Y:,PeTools
NUMK 0
EXEC !=NUMLOCK.EXE
------------------------------------
反之,则没有挂载Y:,PeTools(如下)
------------------------------------
_SUB RamdY
RAMD ImDisk,L64,NTFS,Y:,PeTools
WAIT 500
FORX !\BOOT\BOOT.WIM,&&BOOTP,1,FDRV &&BOOTN=%&BOOTP%
FORX %&BOOTN%\WIMFILE\*.WIM,&&WIMP,0,TEAM NAME &&WIMN=%&WIMP%|PATH Y:\%&WIMN%\%&WIMN%|MOUN %&WIMP%,Y:\%&WIMN%\%&WIMN%|IFEX Y:\%&WIMN%\MAIN.INI,LOAD Y:\%&WIMN%\MAIN.INI
_END


WAIT 300
NUMK 0
EXEC !=NUMLOCK.EXE
------------------------------------
但都没有挂载WIM,也就是Y:,PeTools中是空的。
因为我不想双击挂载,所以没有用“双击挂载的注册表”那段命令。

请大元帅赐教,谢谢!
作者: spadek    时间: 2012-7-31 16:12
标题: 回复 #4 2011dyzyb 的帖子
FORX !\BOOT\BOOT.WIM,&&BOOTP,1,FDRV &&BOOTN=%&BOOTP% //作用是搜索BOOT目录是否存在BOOT.WIM文件,&&BOOTP为搜到的第一个BOOT.WIM文件的路径.

此句按需修改,如内核文件名不是BOOT.WIM,就需要修改。WIMFILE位于内核所在盘根目录。_SUB,_END语句需要用call调用,如CAll RamdY。

如原INI文件存在创建Y盘语句,可以删除RAMD ImDisk,L64,NTFS,Y:,PeTools 但CAll RamdY必须在创建Y盘后执行。

建议还是学习下PECMD命令用法,打开PECMD,对照看命令的作用。

[ 本帖最后由 info 于 2012-7-31 16:16 编辑 ]
作者: xzf680    时间: 2012-7-31 17:08
高手啊!我来学习一下,呵呵。。。
作者: 2011dyzyb    时间: 2012-8-2 15:02
原帖由 info 于 2012-7-31 16:12 发表
FORX !\BOOT\BOOT.WIM,&&BOOTP,1,FDRV &&BOOTN=%&BOOTP% //作用是搜索BOOT目录是否存在BOOT.WIM文件,&&BOOTP为搜到的第一个BOOT.WIM文件的路径.

此句按需修改,如内核文件名不是BOOT.WIM,就需要修改。WIMF ...


无能为力了,我的PE就是BOOT\BOOT.WIM,但仍然不能挂载。
作者: spadek    时间: 2012-8-2 15:38
标题: 回复 #7 2011dyzyb 的帖子
所以我说要学习下命令的作用,原理懂了,就可以自己找到是哪里出错了。

注意必须是PECMD2012。可以用MESS查看下变量的值是否正确。PECMD2012可以很方便的在系统下调试。

如:FORX !\BOOT\BOOT.WIM,&&BOOTP,1,TEAM MESS %&BOOTP%|FDRV &&BOOTN=%&BOOTP%|MESS %&BOOTN%

[ 本帖最后由 info 于 2012-8-2 15:40 编辑 ]




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