本文的前三部分取自PECMD技术社区的什么是PECMD?PECMD的历史、PECMD在WinPE中的应用。本人做了一些修改。特此说明!
一、PECMD是什么
PECMD是WinPE Commander,即 WinPE 命令解释工具,也是国内及其它一些国家 WinPE 的登录命令和命令解释工具。
通俗的来讲,它是WINPE非常核心的一个程序,为WINPE提供了大量命令,可以实现创建快捷方式,运行程序,设置壁纸、分辨率,安装网络等各种强大的操作。甚至我们还可以用PECMD命令来编写程序。
由于其强大功能,可媲美小型的集成开发环境,故也可以作为正常系统中的应用开发平台。
PECMD目前有两个主流版本,分别为PECMD4.0和PECMD2012。
PECMD4.0是Lxl1638在2007年至2011年期间为 Windows 预安装环境(简称 WinPE)所写的免费工具。根据Lxl1638在无忧论坛发布的帖子,PECMD从2.4一直升级到4.0版,经历了50多个版本的更新(我猜测因为PECMD是在XCMD2.2的基础上开发的,所以初始版本是从2.x开始的)。
PECMD2012是在PECMD4.0停止维护后,由mdyblog在参考PECMD2.4公开源码的基础上重新设计而成的,它基本兼容了Lxl1638的PECMD,并增加了部分命令及功能,于2012年发布并持续维护至今。相较于PECMD4.0,PECMD2012提供了不同的版本,具有更强的可玩性。并提供了一个PECMD命令编辑器PECMDIT。
目前大部分Windows PE使用的是PECMD2012。
二、PECMD的历史
2001年~2006年(早期的WinPE1.x时代),WindowsPE在初始化SHELL时,采用的是XPELOGON程序;
2007年,由于XPELOGIN配置严谨、安全但登录速度慢等原因,Yonsm开发了更自由、快速的XCMD来替代XPELOGIN,并提供了更多的扩展命令;
2007年,Lxl1638在XCMD2.2原有17条命令基础上修改完善了7条命令(实际更多),补充了20条命令,PECMD诞生;
2008年~2010年,Lxl1638在开发WimTool时,开发了WinCMD,并吸收了PECMD的特性;
2011年,PECMD停止了维护,版本号最终停留在了V4.0.2011.0501,总共提供了91条命令;
2012年~今天,mdyblog在参考PECMD2.4公开源码的基础上重新设计开发了PECMD的新分支PECMD2012。
三、PECMD的作用
PECMD最大的作用是在WindowsPE环境中用于初始化并登录Shell,设置启动过程相关参数,创建WINPE软件桌面及开始菜单快捷方式等。
另外我们还可以利用其强大自由的扩展性制作出许多简单实用的工具,如果有足够的时间和精力,你完全可以用它开发出常规的桌面应用。
PECMD写的程序
四、PECMD的变量
PECMD内置了一些(环境)变量的支持:
CurDir ---- 当前目录
CurFile ---- 配置文件名称
Desktop ---- 桌面
Favorites ---- 收藏夹
MyName ---- 自身文件名
IECache ---- IE临时目录
Personal ---- 我的文档
Programs ---- 程序
SendTo ---- 发送到
StartMenu ---- 开始菜单
Startup ---- 启动菜单
QuickLaunch ---- 快速启动栏
SystemRoot ---- 系统文件夹
这里列举的是PECMD4.0的内置变量,PECMD2012增加了部分变量,详情请看PECMD说明文件。
下面简单举例解释变量的使用方法:
例一:要在桌面创建一个链接,我们可以这样写命令:
LINK %Desktop%\Opera浏览器,%ProgramFiles%\opera\opera.exe
这个 %Desktop%就是变量。我们在写命令的时候必须在变量名前后加一对百分号。
如果是在CMD批处理文件中执行PECMD命令时,若要使用PECMD内置的环境变量,则要用双对百分号将其包围,如%%Desktop%%。
例二:把当前目录下文件名为“wall”的图片设置为壁纸。我们可以这样写:
WALL %curdir%\wall.jpg
这里注意,配置文件必须和wall.jpg在同一文件夹内。假设wall.jpg在Windows下system32文件夹内。如果我们不用变量,则必须这样写:
WALL %WINDIR%\SYSTEM32\wall.jpg
用了变量,可以减轻我们的工作量,使得代码更简易。
五、PECMD的窗口控件
PECMD支持创建窗口及一些窗口控件。
ComboBox ----下拉选择框
Button ----按钮控件
Picture ----图像区域控件
CheckBox ----复选框控件
Edit ----编辑框控件
HotKey ----系统热键
PopupMenu---- 托盘图标菜单
Radio ----单选框控件
ProgressBar ----进度条控件
Group ----分组面板
Static ----文本标签控件
Timer ----定时器控件
这里列举的是PECMD4.0的窗口控件,PECMD2012增加了部分控件,详情请看PECMD说明文件。
下图是利用PECMD编写的小程序,这里就涉及到了PECMD的窗口控件。
六、PECMD的命令
PECMD4.0一共有91个命令,而PECMD2012则有123个命令。最常用的主要有EXEC、LINK、LOAD、TEXT、HOTK、USER、WALL等十几个命令。每个命令都带有一些参数。
比如:
TEAM 电脑 EXEC =!ime\freeime.exe `安装极点五笔
LINK %Programs%\硬件检测\内存测试,硬件检测\memtest.exe `创建快捷方式
LOAD "X:\PROGRAM FILES\TY.INI" `加载配置文件
TEAM TEXT 创建常用程序快捷方式及软件关联...|WAIT 1200 `显示文字
具体的使用方法清参考PECMD的说明文件。
如果你想灵活掌握PECMD命令的使用,可以多参考WINPE创作者的PECMD.INI(也可能其他名字)文件。多向高手学习。
PECMD的脚本文件格式支持WCE、WCI、WCS、WCX、INI、INF、TXT、LOG等以及任意自定的格式。为了规范,PE 的 LOAD 配置文件用 INI,驱动安装用 INF,而脚本则使用 WCE、WCI、WCS、WCX;个人测试建议用 WCI WCX 或在文件名称前加自定义的注释字符;而压缩一般使用 WCZ、WCM、WZM 等,日志使用LOG(默认值),内置帮助文本用 TXT-ANSI 编码。自定脚本格式必须确保自定的脚本格式符合系统定义的文本脚本规格规范,否则会出错。
七、PECMD小技巧
我们用PECMD写的代码一般必须在WINPE环境下使用。正常系统下缺乏PECMD程序的支持是无法运行的。那么如果想在正常系统下运行,我们可以把代码内置到PECMD中。
示例如下:
比如我们要写一个DISM映像工具的小程序。
我们用Resoure Hacker打开PECMD.exe文件,找到“SCRIPT”,单击展开101-2052。然后把代码复制进去并编译脚本。然后另存为即可。这样就可以脱离WINPE环境运行了。
我们可以把PECMD.EXE改名为DISM映像工具.exe,还可以修改图标组,换成你想要的ICO图片。