目前,国内winpe系统大都有一个核心软件支持,这就是pecmd.exe(一个命令行解释程序)共有70多条。
一。命令的分类:
1、常用命令行命
2、窗口控件、子程序命令
(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
3、字符串、字符控制:
LPOS LSTR MSTR RPOS RSTR STRL
4、窗口、子程序标志:
_END _SUB
5、常用命令:
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 <窗口名称>,<窗口形状>,[窗口标题],[窗口事件],[窗口图标],[窗口类型]
功能:定义子过程或定义一个窗口。
参数:
■子过程名: 字符串。
■窗口名称: 字符串,窗口名称应是唯一的,不能与其它控件名称或环境变量名称同名。
■窗口标题: 文字。
■窗口形状: 窗口位置和大小,格式为
■窗口事件: 关闭窗口时执行的命令,必须是 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定义的窗口内建立一个复选框控件。
参数:
■复选框名称: 字符串,复选框的名称应是唯一的,不能与其它控件名称或环境变量名称同名。
■复选框形状: 复选框位置和大小,格式为
■复选框标题: 复选框上的文字,用于描述复选框的功能或说明。
■复选框事件: 点击该复选框时执行的命令,必须是 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定义的窗口内建立一个单行文本编辑框。
参数:
■编辑框名称: 字串,编辑框名称应是唯一的,不能与其它控件名称或环境变量名称同名。
■编辑框形状: 编辑框位置和大小,格式为
■编辑框内容: 字串,初始化编辑框时填入的文字内容。
■编辑框事件: 在编辑框内按下回车键时执行的命令,必须是 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定义的窗口内建立组合面板,用于说明组合面板内控件的功能和作用。
参数:
■组合面板名称: 字串,组合面板名称应是唯一的,不能与其它控件名称或环境变量名称同名。
■组合面板形状: 组合面板的位置和大小,格式为
■组合面板标题: 字串,用以描述组合面板的作用或功能。
示例:
◆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命令注册热键。