PECMD 命令详解

PECMD 全称 WinPE Commander,即 WinPE 命令解释工具。由于其强大功能,可媲美小型的集成开发环境,故也可以作为正常系统中的应用开发平台。

除了在 WinPE 环境中用于初始化并登录 Shell,还可以利用其强大自由的扩展性制作出许多简单实用的工具,如果有足够的时间和精力,你完全可以用它开发出常规的桌面应用。

命令分类

1、窗口控件、子程序命令

(1)、系统变量:
CurDir — 当前目录
Desktop — 桌面
Favorites — 收藏夹
Personal — 我的文档
Programs — 程序
SendTo — 发送到
Start — 开始菜单
Startup — 自动运行
QuickLaunch — 快速启动栏
SystemDriver — 系统分区
SystemRoot — 系统文件夹

(2)、常用控件:
ComboBox Button Picture CheckBox HotKey PopupMenu Progress BarGroup Static Timer Radio CHEK Menu LABE EDIT GROU IMAG ITEM MEMO PBAR TIME RADI

2、字符串、字符控制:
LPOS LSTR MSTR RPOS RSTR STRL

3、窗口、子程序标志:
_END _SUB

4、常用命令:
BROW CALC CALL DATE DEVI DISP EJEC ENVI EXEC EXIT FBWF FDIR FDRV FEXT FILE FIND FONT FORX HELP HKEY HOTK IFEX INIT KILL LINK LIST LOAD LOGO LOGS MAIN MD5C MENU MESS MOUN NAME NUMK PAGE PATH RAMD REGI RUNS SEND SERV SHEL SHOW SHUT SITE SUBJ TEAM TEMP TEXT TIPS UPNP

[_SUB]

格式:_SUB <子过程名> 或 _SUB <窗口名称>,<窗口形状>,[窗口标题],[窗口事件],[窗口图标],[窗口类型]

功能:定义子过程或定义一个窗口。

参数:
# 子过程名: 字符串。
# 窗口名称: 字符串,窗口名称应是唯一的,不能与其它控件名称或环境变量名称同名。
# 窗口标题: 文字。
# 窗口形状: 窗口位置和大小,格式为<L左T上W宽H高>,左上宽高均为数值,省略”左上”时窗口居中。
# 窗口事件: 关闭窗口时执行的命令,必须是 PECMD.EXE 支持的命令。
# 窗口图标: 窗口标题栏和任务栏的图标,格式为<图标文件名#ID>
# 窗口类型: [-][#][数值],”-“为无标题栏,”#”为无边框窗口,数值为透明度,数值超99为隐藏窗口。

示例:

_SUB DoLoop
_SUB Windows1,W360H440,PECMD功能演示,EXEC $使用说明.TXT,%IconFile%#19,20

备注:
* 子过程名或窗口名的第1个字符不能是”$”,命令关键词_SUB与子过程名或窗口名之间必须是1个空格。
* 若有多个_SUB命令,这些命令定义的名称不能重复,不能近似,也不能用这些名称设置成环境变量。
* 本命令与_END命令必须成对出现,均不能在命令行中使用,其它参照_END命令、CALL命令的说明。
* 要设置窗口的标题,可以使用 “ENVI @窗口名称=窗口标题” 来设置 ,参照 ENVI 命令的说明。

[_END]

格式:_END

功能:结束子过程或结束窗口定义。

参数:
# 无

示例:

_END

备注:
* 定义子过程的 _SUB 命令和 _END 命令必须单独一行。即:FIND、IFEX、TEAM 命令内不能定义子过程。
* _SUB 与 _END 之间的命令(即子过程)只被对应的 CALL 命令执行,主流程会跳过这些命令。
* _END 命令必须与 _SUB 命令一一匹配,且子过程内不能再定义子过程。
* 子过程放在配置文件的任意位置都可以被同一配置文件中的 CALL 命令调用,建议放在文件开始处。
* 该命令及 _SUB 命令只能在配置文件中使用,不能在命令行下使用。

[BROW]

格式:BROW <变量名>,[[*|&]初始路径],[提示文字],[扩展名]

功能:浏览磁盘文件和目录。

参数:
# 变量名: 用于保存浏览结果的变量名。
# 初始路径: 为浏览窗口默认选中的文件或目录,省略该参数时定位到系统默认的路径;前导符”*”为浏览目录对话框,前导符”&”为保存文件对话框,省略前导符为打开文件对话框。
# 提示文字: 可以省略,省略时默认的文字为系统默认的文字提示。
# 扩展名: 浏览指定扩展名的文件,省略表示所有文件。

示例:

BROW Boot_Ini,C:\Windiws\BOOT.INI,请选择一个文件,INI
BROW Tag,*C:\Windiws,请选择一个目录

备注:
* 本命令会打开一个文件目录浏览对话窗,让用户浏览磁盘文件目录,用户可选择某个文件或目录。
* 选择结果将保存在指定的进程环境变量中。示例2可通过环境变量 %Tag% 来引用。
* BROW命令必须在INIT命令之后或在桌面执行。

[CALC]

格式:CALC [#]<变量0><=><变量1><运算符><变量2>

功能:将”变量1″和”变量2″按”运算符”来运算,把运算结果保存在”变量0″中。

参数:
# 前导”#”表示所有变量按 int 型数据来处理,省略该前导表示所有变量按double型数据来处理;
# “变量1″和”变量2″可以是具体数值,也可以是已存在的变量;
# “运算符”目前只支持”+”、”-“、”*”、”/”四种运算。

示例:

加法运算: CALC #Sum = 128 + 32 或 CALC Sum = %Datum1% + %Datum2%
乘法运算: CALC #Result = 128 * 64 或 CALC Result = %Datum1% * %Datum2%

备注:
* “变量1″或”变量2″可以用 ENVI 命令来直接设置(赋值),也可以是 CALC 命令运算赋值的结果;
* “变量1″或”变量2″没有赋值时,当数值”0″处理;要完成复杂的四则运算可用一系列 CACL 命令完成;
* CACL命令按 double 型变量来处理数据时,最多保留4位小数,要比较数值大小可用IFEX命令来判断。

[CALL]

格式:CALL <$DLL名>,[函数],[[#]参数1],[[#]参数2],[[#]参数3],[[#]参数4]或CALL <过程>或CALL <@窗口>

功能:调用DLL函数 或 调用子过程。

参数:
# 前导”$”表示调用DLL函数,指定DLL路径、函数名和参数。省略函数名,将调用”DllRegisterServer”,参数默认为UNICODE字符串,如果以”#”前导则表示整数;最多支持四个函数参数。
# 前导”@”表示调用由_SUB命令定义的窗口,不要在_SUB命令定义的窗口内执行CALL @调用另一个窗口。
# 省略前导”$”表示调用子过程,参数为子过程名称。

示例:

调用DLL函数 : CALL $SHELL32.DLL,DllInstall,#1,U
调用窗口过程: CALL @Window1
调用子过程: FIND MEM>127,CALL EXPLORER_SHELL!CALL CMD_SHELL

备注:
* 调用DLL函数 : DLL中的函数必须以 STDCALL 方式导出(不明白什么意思的话,就当没任何问题)。
* 调用窗口过程: 用CALL 的前导”@”调用窗口时,该CALL命令后的命令将暂停执行,直至窗口关闭。
* 调用子过程: CALL命令只能调用同一配置文件内的子过程,CALL命令调用子过程的功能不能在命令行中使用,其它参照_SUB和_END命令的说明。

[CHEK]

格式:CHEK <复选框名称>,<复选框形状>,[复选框标题],[复选框事件],[复选框状态] 功能:在_SUB定义的窗口内建立一个复选框控件。

参数:
# 复选框名称: 字符串,复选框的名称应是唯一的,不能与其它控件名称或环境变量名称同名。
# 复选框形状: 复选框位置和大小,格式为<L左T上W宽H高>,左上宽高均为数值。
# 复选框标题: 复选框上的文字,用于描述复选框的功能或说明。
# 复选框事件: 点击该复选框时执行的命令,必须是 PECMD 支持的有效命令。
# 复选框状态: 数字,1或-1为钩选状态,0,2或-2为没有钩选,小于0为灰色不可用状态。

示例:

CHEK Check1,L180T336W100H20,可写挂载,,1

备注:
* CHEK命令必须位于_SUB命令和_END命令之间,其它位置的CHEK命令无效,参照_SUB、CALL命令说明。
* 环境变量: %复选框名称% 为复选框标题,设置标题,可用 “ENVI @复选框名称=复选框标题” 来设置。
* 可用”ENVI @复选框名称.Check=数值”来设置复选框钩选状态,数值0为未钩选状态;非0为钩选状态。
* 可用”ENVI @复选框名称.Enable=数值”来设置复选框可用状态,数值0为禁用状态;非0为可用状态。

[DATE]

格式:DATE [变量名] 功能:返回系统当前日期和时间

参数:
# 变量名 用于保存系统当前日期和时间的变量名称

示例:

DATE SysDate

备注:
* 返回结果以”年-月-日|星期|时:分:秒”的形式保存在指定的变量中,要取出其中的”日期”或”时间”,请用 PECMD 的 字符串处理命令(LPOS、RPOS、LSTR、MSTR、RSTR)来处理;
* 若省略”变量名”时,结果保存在环境变量%CurDate%中,示例的结果可能是”2008-8-8|5|20:8:8″。

[DEVI]

格式:DEVI [$]

功能:从 CAB 文件或指定的文件夹中查找(并安装)驱动程序。

参数:
# 指定CAB文件路径。前导”$”表示解压缩驱动文件后安装驱动,否则不安装驱动。

示例:

DEVI %SystemRoot%\DRV.CAB

备注:
* 此命令使用自定的(而非系统的)驱动搜索算法,可快速解压缩可能用到的驱动程序,因此,一个设备可能搜索到多个驱动程序。
* 在CAB中,把每个驱动单独放在一个目录中,并保证CAB中INF文件总是在当前目录的最前面,且CAB中的INF文件必须经过处理。建议使用配套程序XCAB来制作。
* INF文件解压缩到”%SystemRoot%\INF”目录,SYS文件解压缩到%SystemRoot%\SYSTEM32\DRIVERS目录,其它文件解压缩到%SystemRoot%\SYSTEM32目录。
* 如果其它文件需要解压缩到特定目录中,可以在文件名中使用”#”代替目录分隔符,如文件”SYSTEM32#WBEM#MOF#XXX.MOF”将会被解压缩到”%SystemRoot%\SYSTEM32\WBEM\MOF\XXX.MOF”。
* 此命令还有一个功能:从本地磁盘中搜索驱动,如”DEVI \Windows,Display”。但此命令未完善,会提示驱动文件对话窗。因此,本功能暂不提供技术支持。

[DISP]

格式:DISP [W水平分辨率 H垂直分辨率] [B颜色深度] [F刷新率] [T等待(毫秒)]

功能:设置显示参数。

参数:
# 分别指定屏幕参数,如果省略则使用原来的设置。

示例:

DISP W1024 H768 B32 F70 T5000

备注:
* 前三组参数可单独使用,如要设置刷新率为75,使用 DISP F75 即可。

[EDIT]

格式:EDIT <编辑框名称>,<编辑框形状>,[编辑框内容],[编辑框事件],[编辑框类型]

功能:在_SUB定义的窗口内建立一个单行文本编辑框。

参数:
# 编辑框名称: 字串,编辑框名称应是唯一的,不能与其它控件名称或环境变量名称同名。
# 编辑框形状: 编辑框位置和大小,格式为<L左T上W宽H高>,左上宽高均为数值。
# 编辑框内容: 字串,初始化编辑框时填入的文字内容。
# 编辑框事件: 在编辑框内按下回车键时执行的命令,必须是 PECMD 支持的有效命令。
# 编辑框类型: 数字,默认为0,表示正常编辑框,大于0表示密码输入框,小于0为灰色禁用编辑框。

示例:

EDIT Edit1,L32T244W240H24,C:\Windows,ENVI @Label1=%Edit1%

备注:
* EDIT命令必须位于_SUB命令和_END命令之间,其它位置的EDIT命令无效,参照_SUB、CALL命令说明。
* 要设置编辑框的文字内容,可使用 “ENVI @编辑框名称=文本内容” 来设置,参照 ENVI 命令的说明。
* 可用”ENVI @编辑框名称.Enable=数值”来设置编辑框的可用状态;0为不可用状态,非0为可用状态。
* 可用”ENVI @编辑框名称.ReadOnly=数值”来设置编辑框的只读状态;0为非只读状态,非0为只读状态。

[EJEC]

格式:EJEC [C-|U-|R:]

功能:移除或弹出指定的USB或CDROM驱动器;本命令的功能未完善。

参数:
# 参数”C-“将弹出所有可能的光驱的光盘;参数”U-“将移除所有可能的USB磁盘。
# 参数”R:”将弹出或移除指定盘符的光驱或USB磁盘;省略参数会弹出或移除所有可能的光驱或USB磁盘。

示例:

EJEC
EJEC C-
EJEC U-
EJEC H:

备注:
* 本命令为系统托盘没有U盘管理图标的精简PE使用;对于有U盘管理图标的PE,建议使用系统托盘图标。
* 本命令不要在配置文件中使用;INIT命令带”I”参数会将本命令的功能安装到托盘图标的菜单中。

[ENVI]

格式:ENVI [$|@|*][名称][[=]值]

功能:设置或清除环境变量。

参数:
# 指定环境变量名称和值。如果省略前导符且不指定值,则为删除指定名称的环境变量。
# 前导”$”表示设置系统级环境变量,否则仅设置本程序内部使用的(进程级)环境变量。
# 前导”@”表示设置窗口控件的名称或窗口控件的文本标题。
# 前导”*”(省略名称和值)表示将光驱的盘符以 CDROM0、CDROM、CDROM1、CDROM2 等写入系统环境变量。

示例:

ENVI TEMP=%SystemDrive%\TEMP

备注:
* 如果使用”EXEC”执行的程序,会自动继承本程序的环境变量,换句话说,如果在配置文件中设置带”$” 的环境变量,对后面的”EXEC”程序中也会有效。
* 在命令提示符下,可以通过没有参数的ENVI命令刷新环境变量。
* 当仅有参数”$”时,则初始化用户文件夹,命令提示符下也可刷新环境变量。

[EXEC]

格式:EXEC [=][!][@][$][&][参数]

功能:执行 EXE 、BAT、CMD 程序。

参数:
# 指定程序路径和参数。前导参数如下(可同时使用,不分先后顺序):
# 前导”=”表示等待执行完成,前导”!”表示以隐藏方式执行。
# 前导”@”表示在后台桌面(WinLogon)执行,彻底隐藏,无法与用户交互,可用于注册,如:”EXEC @PECMD.EXE CALL $SHELL32.DLL,DllInstall,#1,U”。
# 前导”&”表示修改进程中的关机代码(挂接”ExitWindowsEx”函数)。建议执行”EXEC &EXPLORER.EXE”修改SHELL的关机函数,这样执行”开始->关闭系统”的时候就会运行”PECMD.EXE SHUT”命令来关机。
# 前导”$”表示以ShellExecute函数执行,用于打开非可执行文件(如 .TXT、.BMP 等)。

示例:

EXEC =!CMD.EXE /C "DEL /Q /F %TEMP%"

备注:
* SHELL 也是通过此命令来载入的。

[EXIT]

格式:EXIT

功能:退出当前的CALL命调用的子过程,或退出LOAD命令调用的配置文件过程。

参数:
# 无

示例:

IFEX $%Val%=10,EXIT!ENVI Val=
FIND $%CancelIt%=YES,EXIT!ENVI CancelIt=

备注:
* 示例1表示数值变量Val的值为10时退出当前过程
* 示例2表示环境变量CancelIt为YES时退出当前过程。

[FBWF]

格式:FBWF [P可用内存百分数] [L最小值] [H最大值]

功能:设置FBWF缓存

参数:
# 最大值、最小值均为MB。

示例:

FBWF P20 L32 H64

备注:
* 三个参数都可单独使用,如 FBWF L64 表示强制设置 64M 的 FBWF;FBWF命令必须在 MOUN 命令之后。

[FDIR]

格式:FDIR <变量名><=><文件名>

功能:返回指定”文件名”所在的目录名(最后无”\”)

参数:
# 变量名 用于保存目录名的变量名称;
# 文件名 合法的文件名称。

示例:

FDIR fPath=C:\Windows\System32\calc.exe
FDIR aPath=%CurDir%\Path1\Path2\FileName

备注:
* 当文件名是相对路径时,返值结果是 PECMD.EXE 的工作目录或配置文件的工作目录;
* 示例1结果是”C:\Windows\System32″
* 示例2结果是”%CurDir%\Path1\Path2″。

[FDRV]

格式:FDRV <变量名><=>[文件目录名]

功能:返回指定”文件目录名”所在的分区盘符(以”:”结束,最后无”\”)或系统所有盘符。

参数:
# 变量名: 用于保存分区盘符的变量名称;
# 文件名: 合法的文件目录名称(也可省略,省略时另有意义,见《备注》的解释。

示例:

FDRV fDrive=C:\Windows\System32\calc.exe
FDRV AllDrive=

备注:
* 当文件名是相对路径时,返值结果是 PECMD.EXE 的工作目录或配置文件的工作目录所在的分区盘符;
* 当省略”文件目录名”时返回系统所有盘符,返回值是 C:|D:|E:|F:|…. 的形式。
* 示例1结果是”C:”,示例2结果是系统所有盘符的列表(注意这个列表不是固定的,会随时发生变化)。

[FEXT]

格式:FEXT <变量名><=><文件名>

功能:返回指定”文件名”的扩展名(不带”.”)

参数:
# 变量名: 用于保存扩展名的变量名称;
# 文件名: 合法的文件名称。

示例:

FEXT fExt=C:\Windows\System32\calc.exe
FEXT aExt=X:\Path1\Path2\FileName

备注:
* 示例1结果是”exe”,示例2返回结果是空值;
* FDIR、FDRV、FEXT 的返回值都可以用 FIND 命令检测或比较。

[FILE]

格式:FILE <文件路径>[操作符][目标路径]

功能:操作文件或目录。

参数:
# 指定源文件路径和目标路径,支持通配符,可以用分号同时操作多个文件。操作符”->”、”=>”分别对应移动、复制,没有操作符则表示删除操作。

示例:

FILE %SystemRoot%\INF\*.INF=>%TEMP%

备注:
* 如果以RAMDISK启动系统,可删除启动后无用的文件(如2M的NTOSKRNL.EXE)来增加RAMDISK的可写空间。

[FIND]

格式:FIND <条件>,[命令1][!命令2]

功能:依据条件表达式是否成立,成立则执行命令1,不成立则执行命令2。

参数:
# 条件对[内存总数]或[磁盘总空间]或[按键]或[环境变量]或[内存进程]的判断。
# 内存总数MEM<比较符>数值。
# 磁盘总空间R:\<比较符>数值,R:表示盘符。
# 按键KEY<比较符>数值。
# 内存进程内存进程名。
# 环境变量$%环境变量名%<比较符>环境变量值,环境变量的比较是不区分大小写的。
# 比较符比较操作符为”<“、”>”、”=”,分别表示”小于”、”大于”、”等于”。
# 数值比较的数值,磁盘和内存单位是MB,按键数值是按键代码。

示例:

FIND MEM<128,SHEL %SystemRoot%\SYSTEM32\XPLORER2.EXE!SHELL %SystemRoot%\EXPLORER.EXE
FIND $%OUTSIDE%=,ENVI $OUTSIDE=%CurDrv%\外置程序

备注:
* 本命令功能强大,比较复杂,且可以嵌套(FIND或IFEX)使用,判断多个条件。IFEX命令功能与其相似。
* <条件表达式>后的”,”号也可用”*”代替。
* 本命令嵌套FIND或IFEX命令时,被嵌套的命令中不能使用”!”分隔符。
* 当 FIND 命令用于检测按键时,若用户按了 ‘A’~’Z’ 或 ‘0’~’9′ 这些键,按键结果将保存在环境变量 %PressKey% 中。

[FONT]

格式:FONT <字体路径>,[起始分区]

功能:注册字体或外挂字体

参数:
# 字体文件路径和起始分区。

示例:

FONT %CurDrv%\外置程序\FONT
FONT \WINDOWS
FONT \WINDOWS,C:

备注:
* 命令第1个字符是”\”时,将从指定的起始分区开始搜索机子所有分区 Windows\Fonts目录下的字体,并安装注册,定义起始分区可避免搜索机子中存在的软驱,省略起始分区将搜索机子所有分区(含软驱)。

[FORX]

格式:FORX [@][[!]\]<文件>,<变量>,[数值],<命令> [参数,参数…]<%变量%>[,参数,参数…][,…]

功能:对匹配的文件目录进行对应的命令操作,本命令的功能类似CMD.EXE的for命令。

参数:
# 文件: 指定文件目录名,可带有通配符。
# 变量: 指定变量名,该变量不能是已存在的环境变量或已存在的窗口控件名。
# 数值: 对匹配的文件目录执行相应次数的命令操作,0或<0表示对所有存在的文件执行命令操作。
# 命令: PECMD.EXE合法有效的命令,命令后的参数格式和个数由该命令而定。

示例:

FORX %CurDir%\Path1\*.DLL,AnyDLL,0,CALL %AnyDLL%
FORX \auto*.INF,AutoRunVirus,0,FILE %AutoRunVirus%
FORX !\WinPE\WinPE.INI,MyIni,1,LOAD %MyIni%

备注:
* 该命令可以搜索到带有属性的文件目录,如隐藏属性的文件目录。
* 前导”\”表示搜索所有分区,”!”表示对所有分区进行逆序搜索,两前导”[!]\”符中”!”不能单独存在。
* 前导”@”表示仅搜索目录并进行相应操作,省略该前导表示仅搜索文件并进行相应操作。
* 示例1,表示注册 %CurDir%\Path1\ 目录中的所有 DLL。
* 示例2,表示删除所有分区根目录的 auto*.INF 文件。
* 示例3,表示逆序搜索所有分区WinPE目录下的WinPE.INI,把搜索的第1个WinPE.INI用LOAD命令加载。

[GROU]

格式:GROU <组合面板名称>,<组合面板形状>,[组合面板标题]

功能:在_SUB定义的窗口内建立组合面板,用于说明组合面板内控件的功能和作用。

参数:
# 组合面板名称: 字串,组合面板名称应是唯一的,不能与其它控件名称或环境变量名称同名。
# 组合面板形状: 组合面板的位置和大小,格式为<L左T上W宽H高>,左上宽高均为数值。
# 组合面板标题: 字串,用以描述组合面板的作用或功能。

示例:

GROU Group1,L8T4W336H400,注册WimShExt.DLL

备注:
* GROU命令必须位于_SUB命令和_END命令之间,其它位置的GROU命令无效,参照_SUB、CALL命令说明。
* 要设置组合面板标题,可以使用”ENVI @组合面板名称=组合面板标题”来设置 ,参照ENVI命令的说明。

[HELP]

格式:HELP [文字前景颜色][#文字背景颜色]

功能:显示帮助信息。

参数:
# 数值(支持16进制)。

示例:

HELP 0x00EEFF#0xFF0000

备注:
* 不用命令行参数,直接执行本程序,也会显示帮助信息。

[HKEY]

格式:HKEY [辅助按键 + ]<#虚拟按键代码><,热键命令>

功能:设置系统热键,并指定该热键执行的命令。

参数:
# 辅助按键: 4个辅助按键(Alt、Ctrl、Shift和Win)可用字符串表示,辅助按键间用”+”连接。
# 按键代码: 按键用虚拟按键代码表示,支持16进制数值。
# 热键命令: 必须是 PECMD 支持的有效命令。

示例:

HKEY #255,SHUT R
HKEY Ctrl+Alt+#0x41,DISP W800H600B16F75

备注:
* HKEY命令必须位于_SUB命令和_END命令之间,其它位置的HKEY命令无效,参照_SUB、CALL命令说明。
* 第1个示例是按下电源键调用SHUT命令重启。
* 注意设置的热键不能与其它程序的热键冲突。

[HOTK]

格式:HOTK [辅助按键 + ]<#虚拟按键代码>,<命令>

功能:设置系统热键,并指定该热键执行的命令(.EXE 或 .CMD 或 .BAT)。

参数:
# 4个辅助按键可用字符串表示,其它按键用虚拟按键代码,支持16进制数值。

示例:

HOTK #255,PECMD.EXE SHUT E
HOTK Ctrl + Alt + #36,PECMD.EXE

备注:
* 第1个示例是按下电源键调用PECMD的SHUT功能关机。
* 本命令不能在命令行中使用,只能在配置文件中使用;PECMD最多能设置8组热键。
* 热键的注册结果写在注册表”HKEY_LOCAL_MACHINE\SOFTWARE\PELOGON”项下。
* SHEL命令必须在 HOTK 命令之后。
* 只有通过SHEL命令加载SHELL时,才能通过HOTK命令注册热键。

[IFEX]

格式:IFEX <条件>,[命令1][!命令2]

功能:依据条件表达式是否成立,成立则执行命令1,不成立则执行命令2。

参数:
# 条件对[可用内存]或[磁盘可用空间]或[按键]或[数值变量]或[文件目录]的判断。
# 可用内存MEM<比较符>数值。
# 磁盘可用空间R:\<比较符>数值,R:表示盘符。
# 按键KEY<比较符>数值。
# 文件目录文件目录名,可以使用通配符。
# 数值变量$%数值变量名%<比较符>数值或数值变量名,数值变量是CALC或ENVI赋值设置的变量。
# 比较符比较操作符为”<“、”>”、”=”,分别表示”小于”、”大于”、”等于”。
# 数值比较的数值,磁盘和内存单位是MB,按键数值是按键代码。

示例:

IFEX KEY=17,TEAM TEXT 搜索字体|FONT \WINDOWS!TEAM TEXT 安装字体|FONT %CurDrv%\外置程序\FONT
IFEX C:\Windows,!MESS 目录C:\Windows不存在,\n请点[确定]。@ 目录检查#OK

备注:
* 本命令功能强大,比较复杂,且可以嵌套(IFEX或FIND)使用,判断多个条件。FIND命令功能与其相似。
* <条件表达式>后的”,”号也可用”*”代替。
* 本命令嵌套IFEX或FIND命令时,被嵌套的命令中不能使用”!”分隔符。
* 当IFEX命令用于检测按键时,若用户按了’A’~’Z’或’0’~’9’这些键,按键结果保存在%PressKey%中。
* 本命令用于变量判断时,所有变量均按double型来处理(最多保留4位小数)。

[IMAG]

格式:IMAG <图片框名称>,[图片框形状],[图像文件名]

功能:在_SUB定义的窗口内建立一个图片框。

参数:
# 图片框名称: 字串,标签名称应是唯一的,不能与其它控件名称或环境变量名称同名。
# 图片框形状: 图片框形状的位置和大小,格式为<L左T上W宽H高>,左上宽高均为数值。
# 图像文件名: 图像文件(支持所有Windows支持的图像文件)将被显示在指定的图片框上。

示例:

IMAG Image1,L8T380W140H70,%CurDir%\logo.gif

备注:
* IMAG命令必须位于_SUB命令和_END命令之间,其它位置的IMAG命令无效,参照_SUB、CALL命令说明。
* 因PECMD.EXE是脚本解释程序,不建议加载大尺寸的图像文件,否则显示会慢。

[INIT]

格式:INIT [C][I][K][U]

功能:执行最基本初始化,注册Window外壳,初始化用户文件夹和环境变量,安装键盘钩子,并建立以下目录:
Favorites 收藏夹目录 Programs 程序菜单目录
Desktop 桌面目录 SendTo 发送到目录
StartMenu 开始菜单目录 Personal 我的文档目录
Startup 启动菜单目录 QuickLaunch 快速启动目录

参数:
# 参数”C”表示将光驱的盘符写入环境变量;参数”I”表示将PECMD的部分功能安装到托盘图标的菜单中;
# 参数”K”表示执行 INIT 命令立即安装低级键盘钩子,否则加载SHELL后才安装低级键盘钩子;
# 参数”U”将USB的盘符写入环境变量(功能未完善)。

示例:

INIT
INIT C
INIT CH
INIT CIK
INIT CIKU

备注:
* 执行INIT命令后,再执行SHEL命令加载指定的SHELL即可启动一个最小化的WinPE。
* 执行INIT命令前确保%USERPROFILE%所在分区有一定的可写空间,否则INIT命令无法完成工作。
* 带参数”C”时,光驱盘符保存在以CDROM开头的环境变量中(这些环境变量必须在启动后刷新才生效)。
* 参数”K”表示即刻安装键盘钩子,接管Ctrl+Alt+Del,呼出任务管理器。
* 带参数”U”时,USB的盘符保存在以USB开头的环境变量中(这些环境变量必须在启动后刷新才生效)。
* 公开发行WinPE的INIT命令不建议带”K”参数,本命令不能在命令行中使用,只能在配置文件中使用。

[ITEM]

格式:ITEM <按钮名称>,<按钮形状>,[按钮标题],[按钮事件],[按钮图标],[按钮状态]

功能:在_SUB定义的窗口内建立一个按钮。

参数:
# 按钮名称: 字符串,按钮的名称应是唯一的,不能与其它控件名称或环境变量名称同名。
# 按钮形状: 按钮位置和大小,格式为<L左T上W宽H高>,左上宽高均为数值。
# 按钮标题: 位于按钮上的文字,用于描述按钮的功能或执行的命令。
# 按钮事件: 点击该按钮时执行的命令,必须是 PECMD 支持的有效命令。
# 按钮图标: 在按钮上显示的图标,格式为<图标文件名#ID>,图标大小 = 按钮高度 # 6。
# 按钮状态: 数字,默认为0表示可用状态按钮,非0为灰色不可用状态按钮。

示例:

ITEM Button3,L32T108W300H54,资源管理器,EXEC explorer.exe,%SystemRoot%\explorer.exe

备注:
* ITEM命令必须位于_SUB命令和_END命令之间,其它位置的ITEM命令无效,参照_SUB、CALL命令说明。
* 要设置按钮上的文本,可使用 “ENVI @按钮名称=按钮文本” 来设置,参照 ENVI 命令的说明。
* 可用”ENVI @按钮名称.Enable=数值”来设置编辑框的可用状态;0为不可用状态,非0为可用状态。

[KILL]

格式:KILL [[<\>窗口标题]|[进程名称]]

功能:关闭指定标题的窗口或强制终止指定的进程。

参数:
# 前导”\”表示关闭指定标题的窗口,如果省略窗口标题则为关闭_SUB定义的窗口。
# 省略前导”\”表示结束指定名称(EXE文件名,无路径)进程,如果省略进程名称则终止PECMD的父进程。

示例:

KILL WinLogon.EXE
KILL \计算器

备注:
* 无窗口标题的进程请用进程名来结束。
* 终止进程时将终止与”进程名称”匹配的所有进程。

[LABE]

格式:LABE <文本标签名称>,<文本标签形状>,[文本标签内容]

功能:在_SUB定义的窗口内建立一条静态文字标签。

参数:
# 标签名称: 字串,标签名称应是唯一的,不能与其它控件名称或环境变量名称同名。
# 标签形状: 标签的位置和大小,格式为<L左T上W宽H高>,左上宽高均为数值。
# 标签内容: 字串,要标签显示的文字,支持多行显示,文字行间用”\n”表示断行。

示例:

LABE Label1,L32T280W128H48,请点击"打开"按钮以浏览文件。

备注:
* LABE命令必须位于_SUB命令和_END命令之间,其它位置的LABE命令无效,参照_SUB、CALL命令说明。
* 要设置标签上文字内容,可以使用 “ENVI @标签名称=标签文字” 来设置 ,参照 ENVI 命令的说明。

[LINK]

格式:LINK [!]<快捷方式路径>,<目标路径>,[运行参数],[图标路径[#图标索引]],[目标备注],[起始位置]

功能:创建快捷方式。

参数:
# 快捷方式: 指定要生成的快捷方式的路径,不需要”.LNK”扩展名。
# 目标路径: 指定快捷方式的目标文件目录(可用相对路径)。若目标不存在,将不会创建快捷方式。
# 运行参数: 目标程序运行参数。
# 图标路径: 快捷方式图标的路径。
# 图标索引: 快捷方式图标在文件资源中序号,0为第1个图标,不填则默认。
# 图标备注: 字符串,对目标程序或目录的说明。
# 起始位置: 目标程序命令的工作目录。

示例:

LINK !%Desktop%\宽带连接,RASPPPOE.CMD,,RASDIAL.DLL#19

备注:
* 前导”!”表示以最小化方式启动程序,可用于执行批处理文件时最小化命令窗口。

[LIST]

格式:LIST <下拉列表框名称>,<下拉列表框形状>,<下拉列表框内容>,[下拉列表框事件],[默认选中的条目]

功能:在_SUB定义的窗口内建立一个下拉列表框。

参数:
# 下拉列表框名称: 字符串,下拉列表框名称应是唯一的,不能与其它控件名称或环境变量名称同名。
# 下拉列表框形状: 下拉列表框形状位置和大小,格式为<L左T上W宽H高>,左上宽高均为数值。
# 下拉列表框内容: 下拉列表框内可供选择的条目,条目与条目之间用字符”|”隔开。
# 下拉列表框事件: 下拉列表框内被选择条目发生变化时执行的命令,必须是 PECMD 支持的有效命令。
# 默认选中的条目: 初始化下拉列表框设置被选中的条目。

示例:

LIST List1,L200T360W128H32,EXPLORER|XPLORER2|CMD,ENVI @Label1=%List1%,EXPLORER

备注:
* LIST命令必须位于_SUB命令和_END命令之间,其它位置的LIST命令无效,参照_SUB、CALL命令说明。
* 环境变量 %下拉列表框名称% 为下拉列表框被选中的条目(字符串)。
* 可用”ENVI @下拉列表框名称.Enable=数值”来设置编辑框的可用状态;0为不可用状态非0为可用状态。

[LOAD]

格式:LOAD <文件路径>

功能:按顺序逐条运行配置文件中的命令。

参数:
# 指定文件名(含路径,支持环境变量)。

示例:

LOAD \外置程序\PECMD.INI

备注:
* 每条命令单独一行,主流程的命令是完全按顺序执行的。不正确的命令或空行将忽略不计。
* 支持 ANSI 和 UNICODE 格式文本文件,推荐使用 UNICODE 格式文本文件。
* 配置文件支持整行注释和行后注释,推荐使用”`”(键盘左上角Esc键下面的字符)作为注释起始。
* 在配置文件中可以使用环境变量”%CurDrv%”表示当前盘符。
* 如果文件路径第1个字符是”\”,则搜索所有磁盘指定目录中的文件,如”LOAD \MyWinPE\PECMD.INI”。
* 配置文件所在目录被设置为当前目录,这样创建快捷方式时,快捷方式目标路径可以使用相对路径。
* 其它的参照MAIN命令的说明。

[LOGO]

格式:LOGO [[#背景颜色]|[图片文件]],[位置大小]

功能:设置或关闭登录画面。

参数:
# 背景颜色: 数值,设置背景颜色时必须要有前导符”#”,设置的颜色无效时将使用注册表内定的颜色。
# 图片文件: 支持BMP/JPG/PNG/GIF等格式,需要GDI+支持。背景颜色和图片文件两者只取其一。
# 位置大小: LOGO窗口的位置和大小,格式为<L左T上W宽H高>,左上宽高均为数值。
# 若无参数: 则关闭启动画面(渐隐淡出)。

示例:

LOGO %SystemRoot%\LOGON.JPG
LOGO #0xFF0000,L100T100W300H200

备注:
* 此命令为非阻塞模式执行。执行本命令后,将立即执行下一条命令。
* 该命令只能在配置文件中使作,如果在命令行中使用,程序马上退出,将不能看到效果。
* 省略”左上”时窗口居中,省略”宽高”时为全屏大小,同时省略”左上宽高”时为全屏窗口。
* 配置文件结束之前,必须调用一次不带参数的”LOGO”命令,以关闭启动画面。
* WinPE启动时建议使用全屏窗口(位置大小),使用LOGO图要求的LOGO内存会大些。

[LOGS]

格式:LOGS [文件路径],[数值]

功能:启用日志以便记录每条命令的执行结果,帮助用户验证配置文件的正确性。

参数:
# 文件路径 : 指日志文件名,含路径。
# 数值 : 为日志文件申请的内存空间(单位为KB),日志记录多,所需空间也大,省略即采用默认值16K。

示例:

LOGS %SystemRoot%\PECMD.LOG

备注:
* 配置文件结束之前,必须调用一次不带参数的”LOGS”命令,以关闭日志文件(确保日志写入文件)。
* 此命令不能在命令行中使用(必须在配置文件中使用)。
* 公开发布的 WinPE 中建议不要启用日志文件。

[LPOS]

格式:LPOS <变量名><=><字符串><,字符><,数值>

功能:返回指定”字符”在”字符串”左边起出现的位置。

参数:
# 变量名: 用于保存命令结果的变量名;
# 字符串: 被检测的字符串,长度不能超2K;
# 字符: 被检测的字符,不区分大小写;
# 数值: 指定被检测的字符出现的次数。

示例:

LPOS iPos=123A56|1234A6|abcdef,a,2
LPOS iPos=123A56|1234A6|abcdef,a,3

备注:
* 当”数值”小于1时返回最右边被检测字符的位置,如上例的结果是15;返回结果为0时表示没有找到。
* 该命令按 Unicode 字符串处理,示例1的返回值为12,示例2的返回值为15(与数值为0的结果相同)。

[LSTR]

格式:LSTR <变量名><=><字符串><,数目>

功能:从指定”字符串”的左边截取指定数目的字符,并将结果返回给指定名称的变量。

参数:
# 变量名: 用于保存命令结果的变量名;
# 字符串: 源字符串,长度不能超2K;
# 数目: 指定截取字符的数目。

示例:

LSTR aStr=1234567890,2
LSTR aStr=1234567890,5

备注:
* 当”数值”小于1时或超出源字符串的长度时,返回结果为整个源字符串(相当于字符串复制);
* 该命令按 Unicode 字符串处理,示例1的返回值为”12″,示例2的返回值为”12345″。

[MAIN]

格式:MAIN [文件路径]

功能:初始化桌面,接管 Ctrl+Alt+Del,并创建新进程执行 LOAD 功能。

参数:
# 指定初始化的配置文件路径。

示例:

MAIN %SystemRoot%\PECMD\PECMD.INI

备注:
* MAIN命令创建LOAD进程,执行完LOAD功能后会驻留内存,安装盘键钩子,挂接”ExitWindowsEx”函数。
* PECMD驻留后占内存较大,你可以使用PECMD的LAOD功能,而MAIN功能则由PELOGON.EXE代替。
* LAOD命令完成LOAD文件的功能后会自行退出内存,其它的参照LOAD命令的说明。

[MD5C]

格式:MD5C [文件名|$字符串],[变量名]

功能:计算文件或字符串MD5校验码,用于设置或验证WinPE登录密码的MD5校验。

参数:
# 文件名 : 要计算MD5校验码的文件全名;字符串: 要计算MD5校验码的字符串。
# 前导”$”: 表示要计算的是字符串的MD5,如果字符串的第1个字符是”$”,请在前面再添加一个”$”。
# 变量名 : 用于保存计算结果的变量名。

示例:

MD5C %SystemRoot%\System32\UserInit.EXE,UserInitMD5
MD5C $Lxl1638,PassWordMD5

备注:
* 用MD5C命令计算字符串MD5校验码时,字符串的字符数限定在256以内(不能含”,”字符)。
* 文件名不要含”,”字符,系统独占文件的MD5校验码是”d41d8cd98f00b204e9800998ecf8427e”或全”0″。
* 被校验的字符串可以含有中文,英文字母区分大小写。
* 给出变量名,MD5C命令计算结果保存到指定的变量中,示例2可通过环境变量 %PassWordMD5% 来引用。
* 省略变量名,MD5C命令的计算结果以消息窗口的形式显示,同时也将结果保存到粘帖板中。

[MEMO]

格式:MEMO <编辑框名称>,<编辑框形状>,[编辑框内容],[目标文件名],[编辑框类型]

功能:在_SUB定义的窗口内建立一个多行文本编辑框。

参数:
# 编辑框名称: 字串,编辑框名称应是唯一的,不能与其它控件名称或环境变量名称同名。
# 编辑框形状: 编辑框位置和大小,格式为<L左T上W宽H高>,左上宽高均为数值。
# 编辑框内容: 初始化编辑框时填入的内容,支持多行文字,文字行间用”\n”表示断行,总长1K以内。
# 目标文件名: 指定文本文件名,多行文本编辑框的内容由该文件载入。
# 编辑框类型: 数字,默认省略或为0,表示可编辑的多行文本编辑框,非0表示只读的多行文本编辑框。

示例:

MEMO Memo1,L304T268W280H88,,%CurDir%\Readme.TXT,0

备注:
* MEMO命令必须位于_SUB命令和_END命令之间,其它位置的MEMO命令无效,参照_SUB、CALL命令说明。
* “编辑框内容”不为空时将忽略”目标文件名”,当”编辑框内容”为空时将加载”目标文件名”指定的内容,超长的”编辑框内容”可以通过环境变量赋值来连接成一个新的字符串变量,方便在记事本中阅读。
* 可用”ENVI @编辑框名称.Enable=数值”来设置编辑框的可用状态;0为不可用状态,非0为可用状态。
* 可用”ENVI @编辑框名称.ReadOnly=数值”来设置编辑框的只读状态;0为非只读状态,非0为只读状态。

[MENU]

格式:MENU <菜单项名称>,[菜单项标题],[菜单项事件],[菜单项状态]

功能:向自定义的托盘图标菜单添加一项菜单。

参数:
# 菜单项名称: 字符串,除分隔线外,菜单项名称应是唯一的,不能与其它控件或环境变量的名称同名,当菜单项名称或菜单项名称的第一个字符为”-“时表示分隔线,否则表示正常菜单。
# 菜单项标题: 菜单项上的文字,用于描述菜单项的功能或说明。
# 菜单项事件: 点击该菜单项时执行的命令,必须是 PECMD 支持的有效命令。
# 菜单项状态: 默认为0,表示正常可用菜单,非0为灰色禁用菜单。

示例:

MENU Menu2,分辨率1024X768 颜色32 刷新率85,DISP W1024H768B32F85
MENU -

备注:
* MENU命令必须位于_SUB命令和_END命令之间,其它位置的MENU命令无效,参照_SUB、CALL命令说明。
* 运行期间暂时不提供修改菜单项标题的支持,即不能通过环境变量 %菜单项名称% 来引用菜单项标题,也不支持用 “ENVI @菜单项名称” 来设置修改菜单项标题。
* 托盘图标菜单的图标由 _SUB 命令定义的窗口图标来决定,省略时采用 PECMD 的主图标。
* 可用”ENVI @菜单项名称名称.Enable=数值”来设置编辑框的可用状态;0为不可用状态非0为可用状态。

[MESS]

格式:MESS <消息窗文字内容><@消息窗文字标题><#消息窗类型>[*自动关闭的时间(毫秒)][$默认的选择]

功能:显示一个[是/否]选择消息窗或显示一个带[确定]按钮的消息窗口。

参数:
# “消息窗文字内容”支持多行文字,文字行间用”\n”断开;”消息窗类型”目前支持”YN”和”OK”两种类型。
# 自动关闭的时间设置为0或不设置时,消息窗口不会自动关闭。默认的选择用Y或N表示,如$Y或$N。

示例:

MESS 发现物理内存不足,\n是否设置虚拟内存?@设置虚拟内存 #YN *10000 $N

备注:
* 用户对”YN”类型消息窗的选择结果保存在环境变量 %YESNO% 中,当选择[是]时,环境变量%YESNO%的值为YES,当窗口超时关闭或选择[否]时这一变量值为NO,可用IFEX或FIND命令判断这一环境变量的值。
* “YN”类型消息窗省略默认的选择参数时自动关闭的返回值为NO。
* “OK”类型消息窗没有返回值,仅向用户显示提示消息。

[MOUN]

格式:MOUN [!][Wim文件名],<Mount目标目录>,[映像ID],[WimFltr临时工作目录]

功能:将WIM文件中的某个映像挂载到指定的目录中或卸下已经挂载上的映像文件。

参数:
# Wim文件名 : Microsoft Windows Imaging Format (WIM) 映像格式的文件。
# Mount目标目录 : 将WIM映像挂载到的目录。
# Wim文件的映像ID : WIM文件中的映像ID,用数值表示。只读挂载映像时,映像ID为 1 时可省略。
# WimFltr临时目录 : 当设置WimFltr临时工作目录时表示RW方式挂载,这个目录建议设置到硬盘。

示例:

MOUN %CurDrv%\外置程序\PROGRAMS.WIM,%ProgramFiles%,1

备注:
* 文件目录名支持环境变量解释;使用 FBWF 命令时,FBWF 命令须在 MOUN 命令后。
* 文件名以”\”开始时,则搜索所有分区(含隐藏分区)指定目录的文件,如: MOUN \MyPE\OP.WIM,%PF%,1
* 前导”!”表示成功挂载隐藏分区中的WIM后,给隐藏分区分配盘符,如: MOUN !\MyPE\OP.WIM,%PF%,1
* 省略Wim文件名为卸下映像,映像ID为非0表示卸载映像时保存修改内容,为0表示不保存修改内容。

[MSTR]

格式:MSTR <变量名><=><字符串><,位置><,长度>

功能:从指定”字符串”的起始位置截取指定长度的字符,并将结果返回给指定名称的变量。

参数:
# 变量名: 用于保存命令结果的变量名;
# 字符串: 源字符串,长度不能超2K;
# 位置: 数值,指定源字符串的起始位置;
# 长度: 数值,指定截取的长度。

示例:

MSTR aStr=1234567890,2,4
MSTR aStr=1234567890,5,7

备注:
* 当”位置”小于1时作1处理,当”长度”小于1或超出源字符串长度时,返回起始位置后的所有字符;
* 该命令按 Unicode 字符串处理,示例1的返回值为”2345″,示例2的返回值为”567890″。

[NAME]

格式:NAME <变量名><=><文件名>

功能:返回指定文件名的基本名(无目录、无扩展名)

参数:
# 变量名: 用于保存命令返回值的变量名
# 文件名: 被检测的合法的文件名称

示例:

NAME aFileName=C:\WINDOWS\NOTEPAD.EXE
NAME aName=%CurDir%\Path1\Path2\FileName

备注:
* 指定的文件名为分区的根目录时,该命令的返回结果为空值;
* 示例1的返回结果为”NOTEPAD”,示例2的返回结果为”FileName”。

[NUMK]

格式:NUMK <数值>

功能:控制小数字键盘的开关状态

参数:
# 数值0时为关,非0为开

示例:

NUMK 1

备注:
* 原有 SEND 命令可实现相同功能,但不十分准确,当 NUMK 为开时,再发送一次按键反而会关掉。

[PAGE]

格式:PAGE <页面文件路径> <初始大小> [最大值]

功能:设置页面文件(虚拟内存)。

参数:
# 指定页面文件的路径,只能用 DOS 8.3 格式的路径,如”C:\PageFile.sys”。
# 初始大小和最大值的单位是 MB;当省略最大值时,自动设置 最大值=初始大小。

示例:

PAGE C:\PAGEFILE.SYS 128 256

备注:
* 如果设置了页面文件,则该分区将无法执行格式化等操作。
* 当 可用内存>初始大小 时,本命令将不设置页文件,即可以定义初始大小来作为设置页文件的条件。
* 该命令有智能化功能,即从你定义的页面文件名(含盘符)所在的分区起开始搜索符合条件(硬盘和容量)分区来设置页文件,避开速度慢的U盘和移动硬盘。以U盘或移动硬盘启动时,可能配置文件定义的页文件就在U盘或移动硬盘。经一轮搜索若没有找到符合条件的硬盘分区设置页文件才利用U盘或移动硬盘来设置页文件。

[PATH]

格式:PATH [@][#][目录名]

功能:操作目录,用于设置PECMD.EXE的当前工作目录或建立目录或删除目录。

参数:
# 目录名称(支持带环境变量)。

示例:

PATH @%CurDrv%\外置程序  PATH %TEMP%

备注:
* 前导”@”表示设置PECMD.EXE的当前目录,方便EXEC、DEVI等命令采用相对路径,以缩短命令行长度。
* 前导”#”表示删除目录,注意该操作也可能删除同名的文件。
* 省略前导符”@”和”#”时,PATH用于建立目录(能建立多级目录)。
* 在配置文件内使用带前导”@”的PATH命令必须谨慎,以防引起错乱。
* 当参数为空时将恢复 PECMD.EXE 默认的当前目录(%SystemRoot%\SYSTEM32)。

[PBAR]

格式:PBAR <进度条名称>,<进度条形状>,[进度条进度]

功能:在_SUB定义的窗口内建立一条进度条。

参数:
# 进度条名称: 字串,进度条名称应是唯一的,不能与其它控件名称或环境变量名称同名。
# 进度条形状: 进度条的位置和大小,格式为<L左T上W宽H高>,左上宽高均为数值。
# 进度条进度: 数值(1~100),初始化进度条的进度百分数,默认为0。

示例:

PBAR Pbar1,L360T11W428H16,0

备注:
* PBAR命令必须位于_SUB命令和_END命令之间,其它位置的PBAR命令无效,参照_SUB、CALL命令说明。
* 要设置进度条的进度,可以使用 “ENVI @进度条名称=数值” 来设置 ,参照 ENVI 命令的说明;当设置的数值小于0时将会使进度条隐藏,大于100的数值将被忽略。

[RADI]

格式:RADI <单选框名称>,<单选框形状>,[单选框标题],[单选框事件],[单选框状态],[单选框组ID]

功能:在_SUB定义的窗口内建立一个单选框控件。

参数:
# 单选框名称: 字符串,单选框的名称应是唯一的,不能与其它控件名称或环境变量名称同名。
# 单选框形状: 单选框位置和大小,格式为<L左T上W宽H高>,左上宽高均为数值。
# 单选框标题: 单选框上的文字,用于描述单选框的功能或说明。
# 单选框事件: 点击该复选框时执行的命令,必须是 PECMD 支持的有效命令。
# 单选框状态: 数字,1或-1为钩选状态,0,2或-2为没有钩选,小于0为灰色不可用状态。
# 单选框组ID: 数字,默认为0,可以将多个单选框分组,组内的单选框可以多选一,组间互不影响。

示例:

RADI RadioButton1,L32T314W100H20,卸载WimShExt.DLL,ENVI @Group1=%RadioButton1%,1,1

备注:
* RADI命令必须位于_SUB命令和_END命令之间,其它位置的RADI命令无效,参照_SUB、CALL命令说明。
* 要设置单选框标题,可使用 “ENVI @单选框名称=单选框标题” 来设置,参照 ENVI 命令的说明。
* 可用”ENVI @单选框名称.Check=数值”来设置单选框钩选状态,数值0为未钩选状态;非0为钩选状态。
* 可用”ENVI @单选框名称.Enable=数值”来设置单选框可用状态,数值0为禁用状态;非0为可用状态。

[RAMD]

格式:RAMD [P可用内存百分数] [L最小值] [H最大值]

功能:设置RamDisk大小

参数:
# 最大值、最小值均为MB。

示例:

RAMD P20 L32 H64

备注:
* 三个参数都可单独使用,如使用 RAMD P10 时,将可用内存的10%设置为RamDisk。

[REGI]

格式:REGI [前导]<HKLM|HKCU|HKCR|HKU|HKCC><\子项\>{<键名,变量名>|[[键名][操作符][[类型符]数据值]]}

功能:读取或设置、删除注册表数据。

参数:
# 前导符”$”、”#”、”@”分别表示读取注册表中的REG_SZ、REG_DWORD、REG_BINARY类型数据,省略表示设置、删除注册表数据。变量名(默认为RegDat)用于保存返回值。
# 子项名所选 ROOTKEY 下注册表项的完整名。
# 键值名要操作的键值名。省略则操作默认键值;如果操作符为”!”且没有”=”,则用于删除整个子项。
# 操作符操作符”!”为删除整个子项;操作符”=”且没有数据为删除;操作符”=”且有数据为设置数据。
# 类型符数据类型。省略为字符串;”#”为REG_DWORD类型数据,如”#0x20″;”@”为REG_BINARY类数据,如”@23 34 90 255″
# 数据值字符串空值用””表示、REG_DWORD类型数据、REG_BINARY类型数据支持16进制数值。

示例:

REGI HKCU\SOFTWARE\WinCMD\Version=#1200
REGI HKCR\lnkfile\IsShortcut=""
REGI $HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache,IECache

备注:
* 此命令比较复杂,请仔细看说明,示例3为读取IE缓存的位置。

[RPOS]

格式:RPOS <变量名><=><字符串><,字符><,数值>

功能:返回指定”字符”在”字符串”右边起出现的位置。

参数:
# 变量名: 用于保存命令结果的变量名;
# 字符串: 被检测的字符串,长度不能超2K;
# 字符: 被检测的字符,不区分大小写;
# 数值: 指定被检测的字符出现的次数。

示例:

RPOS iPos=123A56|1234A6|abcdef,a,2
RPOS iPos=123A56|1234A6|abcdef,a,3

备注:
* 当”数值”小于1时返回最左边被检测字符的位置,如上例的结果是4;返回结果为0时表示没有找到。
* 该命令按 Unicode 字符串处理,示例1的返回值为12,示例2的返回值为4。

[RSTR]

格式:RSTR <变量名><=><字符串><,数目>

功能:从指定”字符串”的右边截取指定数目的字符,并将结果返回给指定名称的变量。

参数:
# 变量名: 用于保存命令结果的变量名;
# 字符串: 源字符串,长度不能超2K;
# 数目: 指定截取字符的数目。

示例:

RSTR aStr=1234567890,2
RSTR aStr=1234567890,5

备注:
* 当”数值”小于1时或超出源字符串的长度时,返回结果为整个源字符串(相当于字符串复制);
* 该命令按 Unicode 字符串处理,示例1的返回值为”90″,示例2的返回值为”67890″。

[RUNS]

格式:RUNS <程序命令><*|,><启动项名称>

功能:设置Windows的启动项

参数:
# 程序命令为EXE、CMD、BAT各种可执行的命令,可带参数;启动项名称为文字。

示例:

RUNS PECMD.EXE EXEC !%CurDrv%\外置程序\DRIVER\STARTDRIVER.CMD,安装驱动。

备注:
* 原REGI命令可实现相同的功能,只是用REGI命令表示需要文字太长,才将这一功能单独做成一条命令。
* 程序命令和启动项名称之间的分隔符为右起的”*”或左起的”。
* 本命令不能在命令行中使用,只能在配置文件中使用。

[SEND]

格式:SEND <按键代码1[_|^]>,[按键代码2],[按键代码3]…

功能:模拟按键。

参数:
# 虚拟按键代码,如VK_NUMLOCK,请参相关考编程文档。如果按键代码以”_”结束,则仅模拟按键按下;”^”则仅模拟按键弹起;否则模拟按下并弹起。

示例:

SEND 0x12_,0x09_,0x09^,0x12^

备注:
* 上面的示例模拟 Alt+Tab。按键代码支持 16 进制和十进制。

[SERV]

格式:SERV [!]<服务名称>

功能:启动或停止服务或驱动程序。

参数:
# 指定服务名称。前导”!”表示停止服务,否则启动服务。

示例:

SERV FBWF

备注:
* 此命令来启动FBWF服务(如果安装了的话),以增加系统盘的可写空间,这样PE就能在光盘上运行了。

[SHEL]

格式:SHEL <文件名(含路径)>,[密码MD5字符串],[重试次数]

功能:加载指定的SHELL,并将SHELL锁定。

参数:
# 文件名为SHELL文件名(含路径,可使用环境变量)。
# 密码是英文字母和数字,区分大小写,密码的最大长度是12个字符。
# 省略密码MD5字符串时会自动登录,默认的重试机会为3次。

示例:

SHEL %SystemRoot%\EXPLORER.EXE,e10adc3949ba59abbe56e057f20f883e,5

备注:
* 本命令功能与EXEC $相似,修改进程中关机代码(挂接”ExitWindowsEx”函数)。
* 本命令同时具有锁定SHELL的功能,当SHELL被杀时能自动加载SHELL。
* 带登录密码的SHELL命令,建议在它之前开启LOGO命令。
* SHEL命令之后的TEXT命令的各参数可能要重新设置。
* SHEL命令必须在HOTK命令之后,本命令不能在命令行中使用,只能在配置文件中使用。

[SHOW]

格式:SHOW [硬盘号|标识符][:分区号],[盘符]

功能:显示系统存在的移动硬盘或固定硬盘的隐藏分区,并给这些分区分配盘符。

参数:
# 硬盘号: 本机中存在的硬盘,”0″表示”hd0″,”1″表示”hd1″,”2″表示”hd2″,依次类推;
# 标识符: 表示硬盘类型的标识,固定硬盘用”F”表示,移动硬盘用”R”表示,标识符与硬盘号只取其一;
# 分区号: “0”表示所有还没指派盘符的分区,”1″表示第1分区,”2″表示第2分区,依次类推;
# 盘符: 用字母”C~Z”表示(不带”:”),省略”盘符”或设置盘符不合理时由 PECMD.EXE 自动分配盘符。

示例:

SHOW 0:1,H
SHOW R:1,U
SHOW F:0
SHOW

备注:
* 某些机型在WinPE启动后已经可以识别移动硬盘,但没有为移动硬盘指派盘符,可以通过 SHOW 命令的”R”标识符为移动硬盘分配盘符,示例2表示给”移动硬盘的第1分区”指派为盘符”U:”;
* 示例1表示”硬盘0隐藏分区1″指派为盘符”H:”,示例3表示自动为”固定硬盘的所有隐藏分区”指派盘符;
* 删除盘符可用SUBJ命令,该命令与SUBJ命令配合,可载入隐藏分区的外置程序并保持原分区隐藏属性。

[SHUT]

格式:SHUT [H|E|R|S]

功能:关闭或重启计算机等操作。

参数:
# 无参数 : 默认为关闭系统;
# 参数”H”: 执行休眠操作,只能在正常系统中使用,系统必须支持休眠(可在控制面板中启用休眠);
# 参数”E”: 关闭系统前先弹出光驱,10秒后再关闭系统;
# 参数”R”: 执行重启系统操作;
# 参数”S”: 执行挂起系统操作,只能在正常系统中使用。

示例:

SHUT E
SHUT R
SHUT H
SHUT S

备注:
* 该命令可在命令行中使用,此功能是快速关机,可能不会保存所有数据。

[SITE]

格式:SITE <文件目录路径>,<文件目录属性>

功能:设置或清除文件目录的属性,SITE命令支持A、H、R、S 四种属性。

参数:
# 设置属性用”+”,清除属性用”-“,(A=ARCHIVE; H=HIDDEN; R=READONLY; S=SYSTEM)

示例:

SITE %SystemRoot%\System32\PELOGON.EXE,+H+R

备注:
* SITE命令既可设置文件属性,也可设置目录属性。

[STRL]

格式:STRL <变量名><=><字符串>

功能:返回指定”字符串”的长度。

参数:
# 变量名: 用于保存命令结果的变量名;
# 字符串: 被检测的字符串,长度不能超2K;

示例:

STRL iLen=1234567890
STRL dLen=一二三四五

备注:
* 该命令的返回结果是Unicode字符串的长度,示例1的返回值为10,示例2的返回值为5

[SUBJ]

格式:SUBJ <虚拟驱动器>,[指派给虚拟驱动器的路径]

功能:将路径与驱动器号关联,相当于CMD的 SUBST 命令。

参数:
# 如果省略”指派给虚拟驱动器的路径”,则删除指定的虚拟驱动器。

示例:

SUBJ B:,X:\PE_Tools

备注:
* 虚拟时,虚拟驱动器须是不存在的;删除虚拟驱动器时,盘符必须准确,否则可能会删除物理驱动器。

[TEAM]

格式:TEAM [命令1][|命令2][|命令3]…[|命令n]

功能:按顺预执行指定命令群组中的各条命令。

参数:
# 一条或多条命令,多条命令之间用”|”分开。

示例:

TEAM TEXT 载入桌面|LOGO|SHEL %SystemRoot%\EXPLORER.EXE|WAIT 3000

备注:
* 本命令后面的命令中不能嵌入IFEX或FIND命令。

[TEMP]

格式:TEMP <[@]Delete|Setting>

功能:清理用户临时文件夹或重新设用户置临时文件夹的位置。

参数:
# Delete表示清理临时目录,前导@表示不经用户确认直接清理;Setting表示重新设置临时目录的位置。

示例:

TEMP Delete

备注:
* 不要在配置文件使用本命令,必须启动到桌面使用;本命令是从注册表读取临时目录位置。

[TEXT]

格式:TEXT [文字行1][\n]文字行2[\n]文字行3…][#颜色][L左][T上][R右][B下][$字体大小]

功能:在登录画面中或桌面窗口显示文字。

参数:
# 文字为空则清除最近定义的矩形区内的文字;默认颜色为白色,默认坐标大致在左上角;结尾”*”表示显示新文字前不清除原来已显示的文字。

示例:

TEXT 正在注册组件……#0xFFDDDD L4 T720 R300 B768 $20

备注:
* 本命令支持多行显示文字,文字行间用”\n”表示断行。
* 字体大小默认为14(相当宋体小5号)。
* 指定的位置[左,上,右,下]与文字的长度和字体的大小有关。
* 本命令在登录期间(配置文件)中使用时将在登录画面显示文字,在Windows中(登录后)使用将在桌面窗口显示文字;当文字为空时则清除最近定义的矩形区内的文字。

[TIME]

格式:TIME <定时器名称>,<定时器周期>,[定时器事件]

功能:在_SUB定义的窗口内建立一个定时器控件。

参数:
# 定时器名称: 字符串,定时器的名称应是唯一的,不能与其它控件名称或环境变量名称同名。
# 定时器周期: 数字,单位为毫秒,数值大于0表示定时器即刻工作,数值为0时表示定时器暂停工作。
# 定时器事件: 触发定时器时执行的命令,必须是 PECMD 支持的有效命令。

示例:

TIME Timer1,10000,FILE %TEMP%\*.*

备注:
* TIME命令必须位于_SUB命令和_END命令之间,其它位置的TIME命令无效,参照_SUB、CALL命令说明。
* 环境变量 %定时器名称% 为定时器的工作状态,0为暂停,非0为已启动。
* 暂停定时器可用 “ENVI @定时器名=0″,再启动定时器可用”ENVI @定时器名=定时器周期(数值)” 。

[TIPS]

格式:TIPS [提示框标题],<提示框内容>,[提示框寿命],[图标样式ID],[<@[A]提示框位置>|[托盘栏图标]]

功能:在屏幕指定位置或托盘处显示一个气泡提示框,省略所有参数时表示清除托盘栏无效图标。

参数:
# 提示框标题: 字符串,提示框标题处显示的文字,长度不能超过64个字符,超出部分无效。
# 提示框内容: 字符串,提示框显示的正文内容,长度不能超过256个字符,可以用”\n”表示分行。
# 提示框寿命: 数字,表示提示框持续显示的时间(毫秒),省略为默认10秒,最长显示时间由系统决定。
# 图标样式ID: 数字,默认0(无图标),1(信息图标),2(警告图标),3(错误图标),4或以上(托盘图标)
# 提示框位置: 必须带前导”@”,表示在屏幕指定位置显示提示框,前导”A”表示箭型提示框,省略”A”时表示方型提示框,位置用LxxTyy表示(xx、yy代表数字),该参数与”托盘栏图标”不能同用
# 托盘栏图标: 格式为”文件名#数字”,省略”文件名”时使用 PECMD.EXE 程序资源中指定的图标。

示例:

TIPS 标题,内容\n可分行\n3行,5000,1,#1
TIPS 标题,内容\n可分行\n3行,5000,2,@aL600T400

备注:
* 托盘栏气泡提示框可以在 PECMD.EXE 结束后继续显示,PECMD.EXE 生命比提示框寿命长时 PECMD.EXE会在指定时间后结束提示框;PECMD.EXE 生命期结束后仍然存在的提示框由系统或用户处理。
* 屏幕提示框在 PECMD 结束后也结束,所以要保证 PECMD 生命期比提示框寿命稍长( WAIT 命令延时)。

[UPNP]

格式:UPNP [$]<参数>

功能:执行 BartPE.EXE 的功能。

参数:
# 前导”$” 表示显示 BartPE.EXE 的执行界面;
# 参数为 BartPE.EXE 的命令行参数。

示例:

UPNP -pnp
UPNP $-pnp

备注:
* 本命令内钳新版 BartPE.EXE 执行代码,WinPE 无需 BartPE.EXE 文件也可完成 BartPE.EXE 的功能;
* 本命令为阻塞模式执行,命令完成后才执行下一条命令;注意 BartPE.EXE 参数及其大小写。

[USER]

格式:USER <用户名><*|,><公司名>

功能:设置”我的电脑”右键菜单属性中的用户名和公司名。

参数:
# 参数为文字。

示例:

USER 微软用户*微软公司
USER 微软用户,微软公司

备注:
* 用户名和公司名之间的分隔符为右起的”*”或左起的”,”。本命令仅能在配置文件中使用。

[WAIT]

格式:WAIT [-][等待时间],[量变名称]

功能:暂停或等待指定时间后再继续执行命令。

参数:
# 前导”-” : 在指定的等待时间内遇到任何按键即中止等待,否则直至等待时间结束;
# 等待时间: 数值(单位毫秒),数值为0时遇到按键即中止,若无按键会无限等待(相当于任意键继续);
# 量变名称: 用于保存等待期间按键的变量,用户的按键结果将保存在指定的变量中。

示例:

WAIT 2000
WAIT 0,PKey

备注:
* 参数为0则暂停,任意键继续,不要在短时间间隔内连续使用暂停功能,也建议暂停功能只使用一次;WAIT 0可检测用户的按键’A’~’Z’或’0’~’9’,省略变量名时按键结果保存在环境变量%PressKey%中。

[WALL]

格式:WALL <壁纸文件名>

功能:设置壁纸

参数:
# 参数为壁纸文件名。

示例:

WALL %CurDrv%\外置程序\WallPage.JPG

备注:
* 支持环境变量、支持各种格式的图形文件。设置壁纸的 WALL 必须在加载桌面 SHEL 命令之前。
* 本命令不能在命令行中使用,只能在配置文件中使用。