|
我现在修改的一个pe在设置虚拟内存时失败,只出现设置内存的对话框。但是无法设置。导致在低于256M内存的机子上无法加载外置程序。
估计是因为替换了PECMD.EXE(版本为最新版3.2.0808;原来的为2.8版的),版本更高了,部分命令出现了变化的缘故。
先附代码如下。请高手看看。能否帮我修改下。
//询问是否设定虚拟内存。
_SUB IFSetPageFile
TEAM TEXT 是否设置虚拟内存?|ENVI YESNO=YES
MESS 您的计算机物理内存较少,某些外置程序的运行可能需要用到\n虚拟内存。设置了虚拟内存,有助于提高系统的速度和稳定性;\n如果您需要保护并恢复硬盘分区数据,可跳过虚拟内存的设置。\n \n您确定要设置虚拟内存吗?(建议设置,30 秒后默认选择否)@设置虚拟内存 #YN *30000
IFEX $YESNO=YES,Call SetPageDrv!TEXT 没有建立虚拟内存……
WAIT 500
_END
//设置虚拟内存。
_SUB SetPageDrv
TEAM TEXT 正在设定虚拟内存……|ENVI $TARGET_ROOT=
BROW * $请选择虚拟内存文件存放的分区,取消则从D盘开始自动选择分区。
IFEX $TARGET_ROOT=,TEXT 正在设定虚拟内存(自动选择存放分区)……|PAGE D:\%PF% 192 256!TEXT 正在设定虚拟内存(虚拟内存存放在 %TARGET_DRIVE% 盘)……|PAGE %TARGET_DRIVE%\%PF% 192 256
_END
//物理内存低于 256MB 时询问是否取消设定虚拟内存
FIND MEM<256,CALL IFSetPageFile
//挂接硬盘上 Windows 系统的字体,如果因字体过多造成启动极其缓慢或无法启动,请关闭下面的命令
//FONT C:\WINDOWS\Fonts
//设置快速启动栏
LINK !%QuickLaunch%\设置虚拟内存,%CurDir%\WinPE_TOOLS\SETPAGEFILE.EXE
LINK !%QuickLaunch%\驱逐舰杀毒软件,%CurDir%\VCR\VCR.EXE
TEXT 正在加载外置程序……
//建立外置程序加载的可行性报告,如果设置了虚拟内存或者可用内存大于一定数值,则加载有关的外置组件
//此行有两条语句,“|”号前面的语言句是在Temp文件夹中建立一个RPT_OK.CMD文件,文件内容为一条命令行语句:
//FOR %%I IN (C D E F G H I J K L M N O P Q R S T) DO IF EXIST %%I:\PAGEFILE.SYS PECMD LINK %Temp%\RPT_OK,%SystemRoot%
//该语句的作用为在C D E F G H I J K L M N O P Q R S T几个盘中寻找页面文件,如果找到,将在Temp文件夹中建立一个RPT_OK.LNK文件以标志已建立虚拟内存。
//不用担心硬盘中可能会存在其它的页面文件而影响结果,因为前面已有一条语句清理掉硬盘中已存在的虚拟内存页面文件了。
//“|”号后面的语言句是执行刚生成的RPT_OK.CMD文件,以真实执行判断并生成标志。
TEAM EXEC !=CMD.EXE /C ECHO FOR %%I IN (C D E F G H I J K L M N O P Q R S T) DO IF EXIST %%I:\PAGEFILE.SYS PECMD LINK %Temp%\RPT_OK,%SystemRoot%>%TEMP%\RPT_OK.CMD|EXEC !=%TEMP%\RPT_OK.CMD
//设置自解压包的运行条件,如设置了虚拟内存,则建立运行条件,否则根据可用内存大小设置不同的运行条件
//具体点是:如果已经设置虚拟内存或可用内存大于60M,将在Temp文件夹中建立一个RPT_OK60.LNK文件以标志可运行自解压包。
IFEX %Temp%\RPT_OK.LNK,LINK %Temp%\RPT_OK60,%SystemRoot%!IFEX MEM>60,LINK %Temp%\RPT_OK60,%SystemRoot%
//如果设置了虚拟内存或可用内存大于 120MB,则设置IFWait变量为空以使下面的部分命令为无阻塞运行,否则设置IFWait变量为=使其排队执行。
ENVI IFWait==
IFEX %Temp%\RPT_OK.LNK,ENVI IFWait=!IFEX MEM>120,ENVI IFWait=
[ 本帖最后由 yidawpf 于 2008-9-2 21:25 编辑 ] |
|