CeleCmd 2.0 使用说明
[简介] [特点] [安装] [使用] [菜单]
[命令] [问答] [许可] [致谢]
一、简介
欢迎使用功能强大、灵活方便的 CeleCmd 命令解释引擎。您只要编写简单的 CeleCmd 命令文件,就能在 Windows Mobile 中实现灵活强大的批处理功能。
[目录]
二、特点
- 性能高效:命令解释引擎精巧构思,短小精干,运行迅速。
- 功能强大:内置支持多种命令,使用这些命令可以编写出功能强大的批处理脚本。
- 扩展支持:支持调用外部 EXE 和 DLL 函数;支持解压缩 RAR 文件。
- 使用灵活:支持格式统一的命令行参数和命令文件,可以在命令行、命令文件和程序界面中,调用 CeleCmd 的各种功能。
- 其它功能:支持导入标准的 Windows 注册表导出文件和 Windows Mobile RGU 注册表脚本脚本,支持处理 Windows Mobile XML/PROVXML 配置文件。
- 方便调试:在程序界面中执行命令或命令文件,可以在日志窗口中跟踪脚本执行的流程和结果,方面发现命令脚本的问题。
- 广泛支持:一个可执行文件,同时支持 Windows Mobile Smartphone/PocketPC 2003/5.0/6.0。
- 源码公开:源代码公开,方便更改定制和功能增强,且在源代码中增加扩展命令支持非常容易。
[目录]
三、安装
- 安装:把 CeleCmd.exe 复制到 Windows Mobile 设备中即可使用。
- 卸载:CeleCmd 是“绿色”软件,删除 CeleCmd.exe 即可卸载。如果选择了关联 CCS/REG/PROVXML 文件,请先在 CeleCmd 程序中取消文件关联。
[目录]
四、使用
- 使用方式
- 直接执行本程序,将显示允许输入命令和现实执行结果的对话框,您可以直接在程序界面上执行各种操作。
- 在命令行参数中使用,例如,要创建快捷方式,执行“CeleCmd.exe LINK %M\程序\测试程序.lnk,%W\Test.exe”即可。
- 在命令文件中使用,例如,“CeleCmd.exe LOAD \Storage Card\*.CCS”。
- 如果省略命令关键字,将把参数作为文件路径(支持通配符)来查找相关文件,并根据扩展名类型执行相应的命令(智能“OPEN”):“.CCS/.REG/.RGU/.XML/.PROVXML”将执行“LOAD”命令;“.DLL”文件将执行“CDLL”的 DllRegisterServer 命令;“.RAR”文件将被“RARX”解压缩;其它则调用系统的默认打开命令。如果文件路径以“!”开头,则递归查找子目录重的匹配文件。
- 命令格式
- CeleCmd 的命令是一行字符串,以大写的四字符关键字开始,紧跟着的是空格或制表符,后面是命令的参数。
- 参数之间用逗号“,”分隔,如果在参数中要使用逗号本身,则需要使用“%,”的转义字符。
- 不同的命令的参数格式不一致,详细请参考 命令。
- 变量与宏
CeleCmd 读取一条个命令文件后,首先展开其中用“%”号前导的宏:
- E 当前脚本的完整路径
- C 当前脚本的目录
- T 当前时间
- D 当前日期
- X 最后一条命令的返回值,十六进制格式,如 0XFFFFFFFF
- x 最后一条命令的返回值,十进制格式,如 -1
- 0-9 用户变量值,用户可以通过 EVAL 命令设置变量 0 到 9 的内容,每个变量能容纳 260 个字符(技巧:其实变量 0 可以容纳 260 * 10 个字符,但第 260 个字符开始与变量 1 重叠,依次类推)
- A 可能是 \Application Data
- Y 可能是 \My Documents
- S 可能是 \Windows\Startup
- W 可能是 \Windows
- P 可能是 \Windows\“开始”菜单\程序
- M 可能是 \Windows\“开始”菜单
- V 可能是 \Windows\收藏夹
- F 可能是 \Program Files
- R 回车字符
- N 换行字符
- # 十六进制字符,后面紧跟这四个十六进制字符,如“%#FEFF”
- % 由于“%”用于宏转义,如果需要在参数中确实需要使用“%”本身,则需要用两个“%”代替,如“%1”要写成“%%1”。
- , CeleCmd 把“,”作为参数分隔符,与“%”类似,如果在参数中需要使用“,”本身,则需要使用“%,”的形式。
- 命令文件
CeleCmd 的命令文件是由 CeleCmd 命令组成的命令集合。
- 每条命令单独一行。
- 命令文件中可以使用注释,注释必须单独一行,以“;”作为注释行开始。
- 命令文件支持 UNICODE 格式(已支持带 BOM 的 UTF-8 和 UTF-16)和 ASCII 格式,为了更高的执行效率,推荐使用 UNICODE 格式。
- 命令文件中可以杂合 Windows Registry Script 内容,CeleCmd 会把 Registry Script 导入到注册表。但是使用这种方式必须十分小心,因为执行过程中,Registry Script 部分会被修改(仅在内存中),可能导致 CALL 和 GOTO 无法正常使用(使用原则:最新会被执行到的
Registry Script 放在文件最后的子过程中,这样就能避免问题)。
[目录]
五、菜单
- 执行:刷新联系人列表。
- 清除日志:清除日志窗口中的内容。
- 文件关联:把 .CCS 和 .PROVXML 文件关联到 CeleCmd,以便在资源管理器中可以直接打开 .CCS 和 .PROVXML 文件。
- 帮助:显示“帮助”窗口,可以查看本帮助信息。
- 关于:显示程序版本、版权和作者信息。
- 退出:退出 CeleCmd 程序。
[目录]
六、命令
[LOAD] [BATC] [IFEX] [ELSE] [CALL] [GOTO]
[PROC] [ENDP] [PLAY] [BEEP] [MSGX] [DLGX]
[LINK] [FILE] [REGX] [RARX] [SEND] [WAIT]
[KILL] [SHUT] [EXEC] [CDLL] [EVAL] [ASOC]
[DISP] [POST] [CCUI] [HELP]
- [LOAD ]<文件路径>
- 功能:LOAD script file/加载并解释命令脚本文件、注册表脚本文件或者 XML 配置文件。
- 参数:指定命令文件的路径,支持通配符。
- 示例:LOAD \*.CCS
- 备注:
- 注意:此命令不再支持通配符“*”和“?”。如果要支持通配符,请直接使用路径名称(不用任何命令),如“\Storage Card\Cele*.CCS”。
- 此命令可以执行 CeleCmd 命令脚本,导入注册表脚本,还可以处理 XML 配置文件。CeleCmd 将会根据文件内容格式(而不是文件扩展名),决定使用什么方式来处理文件。
- 注册表脚本文件中,最后一行不会被处理,建议最后留一个空行。
- BATC <命令1>[;命令2][;命令3][...]
- 功能:BATch Command/一次执行多个命令。
- 参数:命令列表,用分号分割。
- 示例:BATC BEEP;MSGX Hello%, World!
- 备注:由于分号被用作分隔符,用此命令执行的子命令中,将无法使用“;”字符。
- IFEX [!]<条件><,命令>
- 功能:IF condition is true, EXecute command/根据条件是否成立,决定是否执行命令。
- 参数:指定条件和命令。前导“!”表示条件不成立才执行。如果不存在下列条件判断符,则把条件当作文件路径,判断文件或目录是否存在。
=:字符串匹配,忽略大小写
!:字符串不匹配,忽略大小写
==:数值相等
!=:数值不相等
>:数值大于
>=:数值大于或等于
<:数值小于
<=:数值小于或等于
&:位 AND 运算
&&:逻辑 AND 运算
|:位 OR 运算
||:逻辑 OR 运算
- 示例:IFEX %x&0x08,BATC BEEP;MSGX Sure!
- 备注:本命令不修改返回值(即,您可以连续判断“%x”并执行相应的操作)。PROC 中的 IFEX 判断不影响调用者的 ELSE 结果。
- ELSE <命令>
- 功能:ELSE condition command/如果最近的 IFEX 条件不成立,则执行命令。
- 参数:指定命令。
- 示例:ELSE MSGX Error!
- 备注:本命令不修改返回值。基于此点,DLGX 后可以连续用此命令判断 %x 的值,而不用担心会被 IFEX 后面的命令修改返回值。
- CALL <子程序名>
- 功能:CALL procedure/调用子程序。
- 参数:指定子程序名称。该子程序必须位于此命令之后。
- 示例:CALL _DiableSTK
- 备注:此命令只能在命令文件中使用,不能在命令行参数中使用。
- GOTO <子程序名>
- 功能:GOTO procedure/转到子程序。
- 参数:指定子程序名称。该子程序必须位于此命令之后。
- 示例:GOTO _DiableSTK
- 备注:此命令只能在命令文件中使用,不能在命令行参数中使用。
- PROC <子程序名>
- 功能:PROCedure/定义子程序。
- 参数:指定子程序名称。
- 示例:PROC _DiableSTK
- 备注:此命令只能在命令文件中使用,不能在命令行参数中使用。
- ENDP <子程序名>
- 功能:END of Procedure/子程序结束。
- 参数:指定子程序名称。
- 示例:ENDP _DiableSTK
- 备注:此命令只能在命令文件中使用,不能在命令行参数中使用。
- PLAY [!][$][*]<声音文件路径>
- 功能:PLAY sound/播放声音。
- 参数:指定声音文件路径,仅支持 WAV 格式。
- 示例:PLAY \Windows\Alarm1.wav
- 备注:前导“!”表示后台播放;前导“$”表示系统声音别名;前导“*”表示循环播放。
- BEEP [类型]
- 功能:BEEP/鸣叫。
- 参数:指定鸣叫声音类型(数值),具体意义与 Windows Mobile SDK 中 MessageBeep 相同,请查阅相关文档或实际尝试。
- 示例:BEEP
- 备注:无。
- MSGX <消息文本>[,标题][,类型]
- 功能:MesSaGe boX/显示消息框。
- 参数:指定消息文本,消息框标题(默认为本程序的名称),以及消息框类型(默认为 0x40)。
- 示例:MSGX 禁用 STK 服务将导致一卡双号功能不能使用。%N%N确实要禁止 STK 服务吗?,禁止 STK 服务,0x24
- 备注:
- 消息框类型与 Windows Mobile SDK 中 MessageBox 意义相同,为以下两组数值的组合:
0x00 OK
0x01 OK/CANCEL
0x02 ABORT/RETRY/IGNORE
0x03 YES/NO/CANCEL
0x04 YES/NO
0x05 RETRY/CANCEL
0x10 ERROR
0x20 QUESTION
0x30 WARNING
0x40 INFORMATION
- 本命令返回值如下:
0x01 OK
0x02 CANCEL
0x03 ABORT
0x04 RETRY
0x05 IGNORE
0x06 YES
0x07 NO
- DLGX [标题,[#]][[选中]|{选中}|<选中>|$]文本1][,[选中]|{选中}|<选中>|$]文本2][...]
- 功能:DiaLoG boX/显示对话框。
- 参数:指定对话框标题(逗号后“#”表示隐藏“取消”软按键);定义对话框中的控件文字;初始值表示复选框和单选框的初始状态,最低位为 1 表示第一个对话框控件选中,依此类推。
- 示例:DLGX 初始设置,#$请选择要执行的操作,$,{1}安装梅花输入法,<0>安装中天 A4 输入法,$,[1]开启 STK 服务,$,$设置字符串:,%0
- 备注:
- 前导“[]”表示复选框;前导“<>”表示单选框;前导“{}”表示分组单选框;前导“$”表示提示文字;否则表示编辑框(如果第一项,则会认为是对话框标题)。
- 如果用户点击确定,将返回所有控件选中状态的组合(即,如果第一个控件被选中,则返回值的最低位为 1,依此类推)。只有复选框和单选框能被选中,但其它控件也计入选中状态组合。
- 如果用户点击确定,第一个编辑框的结果将保存在 %0 中,第二个编辑框的结果将保存在 %1 中,依此类推。最多支持 32 个控件。
- 如果用户点击取消,将返回 -1;
- 此命令功能已增强,且已完全支持 Smartphone 按键在控件之间导航,和 PPC 中的上下滚动。
- 特别地,前导“@”表示复选框,后面紧跟“|注册表数据”(参考“REGX”格式),在对话框中会自动判断注册表键值并设置复选状态,返回之前会自动设置注册表键值,利用此功能可以写出很强大的注册表设置界面。如:
DLGX 初始设置,@显示 SIM 卡联系人|HKCU\ControlPanel\Phone\#ShowSIM=1?0,@启用 STK 服务|HKLM\Services\STK_Service\#Flag=0?4,$,$(C) Yonsm.NET
- LINK <快捷方式路径><,目标路径>[,运行参数][,图标路径][,图标索引]
- 功能:LINK shortcut to target/创建快捷方式。
- 参数:
快捷方式路径:指定要生成的快捷方式的路径,需要“.LNK”扩展名。
目标路径:指定快捷方式的目标文件或目录。
运行参数:目标程序运行参数。
图标路径:快捷方式图标的路径。
图标索引:快捷方式图标的在文件资源中的标识。
- 示例:LINK %S\电话,%W\CProg.exe,,ShellRes.dll,1024
- 备注:图表索引是该图标在所有图标中的顺序;或者用“-”前导,紧跟着图标的资源标识,如“-100”。
- FILE <文件路径>[<操作符>[目标]]
- 功能:FILE or directory operation/创建、复制、移动、删除文件或目录。
- 参数:指定源文件路径和目标路径,支持通配符。如果有没有以下操作符存在,则表示删除文件;否则,表示以下操作:
->:移动文件或目录(不支持通配符,推荐使用“=>”复制命令,然后用删除命令)
=>:复制文件或目录(如果复制文件夹,文件夹必须用“\”结尾,如“FILE \Temp\XX\=>\Windows\XX\”;如果要递归复制,必须以“!”前导)
<-:创建文件,并把目标数据以 ASCII 方式写入到文件中(无法写入空字符,即“%#0000”)
<=:创建文件,并把目标数据以 ASCII 方式追加到文件中
{-:创建文件,并把目标数据以 UNICODE 方式写入到文件中
{=:创建文件,并把目标数据以 UNICODE 方式追加到文件中
- 示例:FILE !\Temp\*.png=>\My Documents\
- 备注:此命令的复制功能可以覆盖 ROM 重的文件,如果要使 ROM 文件,可写直接复制到本身,“FILE %W\PlumCh1=>%W\PlumCh1”。
- REGX <<根项><\子项\>[[-|#|@]键值][=数据][?判断]
- 功能:REGistry eXecution/读取、设置、删除注册表数据。
- 参数:
注册表脚本路径:导入指定的注册表脚本到系统注册表中,支持通配符,例如“REGX %c\*.REG”。 如果前导“!”表示不显示提示对话框。
子项:所选 ROOTKEY 下注册表项的完整名,可以是 HKU、HKCU、HKCR、HKLM 或 HKEY_USERS、HKEY_CURRENT_USER、HKEY_CLASSES_ROOT、HKEY_LOCAL_MACHINE。
键值:要操作的键值。如果前导“#”则表示 REG_DWORD 整数类型的数据,如“#0x20”;如果前导“@”则为 REG_BINARY,如“@23 34 90 255”;否则为字符串。
数据:要设置的数据。如果没有“=”则表示获取数据:如果是字符串数据,则保存在 %0 中;如果是整数键值,则保存在 %x 中。如果前导“-”,且数据中没有“=”则删除值或子项。
判断:判断键值是否等于数据(而不是设置数据),“?”后面的内容被此命令忽略(为兼容“DLGX”)。
- 示例:REGX HKCR\CeleCmd\#Test=%x
- 备注:此命令描述比较复杂,请耐心理解。
- RARX <文件路径>[,目标目录]
- 功能:RAR file eXtraction/解压缩 TAR GZip 文件到指定目录。
- 参数:指定源文件路径和目标路径。如果没有目标目录,将解压缩到根目录。
- 示例:RARX %C\CeleSetup.rar,%C
- 备注:此命令必须由 UnRAR.dll 支持。定制 ROM 时可以用此命令来解压缩文件,以避免 InitFlashFiles.dat 中大量的文件拷贝命令,以及 CAB 文件中不支持中文的困扰。
- SEND <按键代码1[_|^]>[,按键代码2[_|^]][...]
- 功能:SEND key input/模拟按键。
- 参数:虚拟按键代码,如 VK_NUMLOCK,请参相关考编程文档。如果按键代码以“_”结束,则仅模拟按键按下;“^”则仅模拟按键弹起;否则模拟按下并弹起。很生动吧:)
- 示例:SEND 0x12_,0x09_,0x09^,0x12^
- 备注:上面的示例模拟 Alt+Tab。按键代码支持 16 进制,如“SEND 0x90”表示按下 NumLock 键。
- WAIT <时间>
- 功能:WAIT to continue/等待指定时间后再继续执行命令。
- 参数:指定时间,单位为毫秒。
- 示例:WAIT 2000
- 备注:无。
- KILL <进程名称>
- 功能:KILL process/强制终止指定的进程。
- 参数:进程名称,即 EXE 文件名(不包含目录)。
- 示例:KILL CProg
- 备注:此命令将终止与“进程名称”前部分匹配的所有进程,所以如果省略参数,可能将全部进程关闭。
- SHUT [G|P|K|H|S|C|R]
- 功能:SHUT down or reboot device/关闭、重起或硬起设备。
- 参数:分别表示 GwesPowerOffSystem()/EWX_POWEROFF/keybd_event/HTC_ColdBoot/HTC_Shutdown/SetCleanRebootFlag/KernelIoControl/EWX_REBOOT 方式执行。默认为 EWX_REBOOT,即重新启动。
- 示例:SHUT
- 备注:参数“H”表示硬起(H 可后接一个 Kernel IO ID(默认为 H0x1012048),表示硬启命令,但每钟设备的硬启代码不一样:HTC Touch Diamond 为 0x1012048;HTC Prophet 为0x1012594;ASUS P527 为 0x1012004;其它设备需要分析才能得知),将导致所有数据丢失,请谨慎使用。
- EXEC [!]<EXE 路径>[,参数]
- 功能:EXECute a program/执行 EXE 程序。
- 参数:指定 EXE 路径和参数。
- 示例:EXEC \Windows\WCELoad.exe,"\Windows\HTC Black.tsk" /silent /nodelete /safe
- 备注:前导“!”表示后台执行,不等待执行完成。
- CDLL <DLL 路径>[,函数名称][,[#]参数1][,[#]参数2][,[#]参数3][,[#]参数4]
- 功能:Call DLL function/调用 DLL 函数。
- 参数:指定 DLL 路径、函数名称和参数。如果省略函数名称,将调用“DllRegisterServer”。参数默认为 UNICODE 字符串,如果以“#”前导则表示整数;最多支持四个函数参数。
- 示例CDLL %W\SHELL32.DLL,DllInstall,#1,I
- 备注:函数必须以 STDCALL 方式导出(不明白什么意思的话,就当没任何问题)。
- EVAL [变量名][=字符串]
- 功能:EVALuate variable/给变量赋值。
- 参数:指定变量名称(0-9、x、X),以及要赋值的字符串。
- 示例:EVAL 0=My Variable
- 备注:
- 如果省略变量名称,则清空所有变量。
- 如果没有等号字符,将返回该变量的数值形式。
- ASOC [!][文件类型]
- 功能:ASOC file type/显示帮助信息。
- 参数:指定要关联的文件类型,如果不指定,表示“CeleCmd”类型。前导“!”表示删除文件关联。
- 示例:ASOC .reg
- 备注:可以关联的文件类型有:.ccs/.reg/.provxml/.xml。
- DISP [0|1|2|4]
- 功能:DISPlay rotation/旋转屏幕。
- 参数:指定屏幕方向,如果不指定,则切换横屏和竖屏。
- 示例:DISP 4
- 备注:可以用这个来旋转屏幕,然后用“EXEC”来加载一些导航软件,并等待执行完成。
- POST [=]<$|窗口名称|窗口类名><,消息>[,wParam][,lParam]
- 功能POST message/给窗口发送消息。
- 参数:指定窗口名称或类名,以及消息标识和参数。前导“=”表示等待完成,“$”表示给所有窗口发送消息。
- 示例:POST =$,0x111,1234,0
- 备注:无。
- CCUI [ 命令]
- 功能:CeleCmd UI/显示 CeleCmd 程序主界面。
- 参数:填写命令到 CeleCmd 主窗口的编辑框中。
- 示例:CCUI
- 备注:
- 在程序界面中,可以交互式执行命令,还可以查看命令的执行结果。
- 不带参数执行 CeleCmd,默认将会执行此命令,显示程序主界面。
- 您也可以修改 CeleCmd.exe 的资源,把您的 CCS 文件脚本(必须是 UNICODE 格式,且最后两个字节必须是 0)导入到 CeleCmd RCDATA 资源中,则 CeleCmd 默认将执行您的自定义命令。
- HELP [文字]
- 功能:HELP information/显示帮助信息。
- 参数:在帮助窗口中要显示的 URL(如“http://www.yonsm.net”)、文件(如“\Test.txt”)或文字(支持 HTML)。默认显示 CeleCmd 帮助。
- 示例:HELP 欢迎使用我定制的 ROM
- 备注:帮助信息已更新,建议看看。另外关于对话框也重写了,有兴趣也看看:)
[目录]
七、问答
- 在定制 ROM 的时候,怎样使用 CeleCmd 来执行初始化操作?
可以参考 Sample 中的 CCS 文件,也可以参考 Kavana 或我定制的 ROM OS 中的 CeleCmd 脚本。下面是一般性用法:
1). Windows Mobile 硬起后解释 InitFlashFiles.dat:创建系统目录;显示欢迎和屏幕调整界面;加载 CeleCmd.exe。
2). CeleCmd 加载根目录下所有子目录下的 *.CCS:假设自动扫描到 \Windows\CeleSetup.CCS。
3). CeleSetup.CCS 内的命令:创建基本的快捷方式;解压缩 CeleSetup.rar 压缩包中的文件到相应位置;加载 \Storage\* 和 \Storage Card\*,即扫描 SD 卡上的子目录中所有 .CCS 文件。
4). 在 SD 卡中放个 CeleCard.CCS 和 CeleCard.REG,自动把卡上的软件的快捷方式添加到开始菜单->程序->工具中,并把相应的设置导入注册表中。
- 如何安装 CAB 而没有界面提示?
EXEC %W\WCELoad.exe,"\Storage Card\ABC.cab" /silent /nodelete /safe
- 如何通知系统刷新桌面插件?
POST $,0x1A,0xF2
- PPC 中,如何更改今日主题?
PROC _更换桌面主题
FILE %W\stwater.jpg
REGX HKCU\Software\Microsoft\Today\-UseStartImage
EXEC %W\WCELoad.exe,"%W\HTC Black.tsk" /silent /nodelete /safe
REGX HKCU\Software\Microsoft\Today\Skin=%W\HTC Black.tsk
REGX HKLM\Software\Microsoft\Color\BaseHue=4
REGX HKLM\Software\Microsoft\Color\-BaseHue
POST $,0x1A,0xF2
WAIT 12000
ENDP _更换桌面主题
[目录]
八、许可
- 本程序及其源代码是可以免费获取的。
- 如果您使用或修改了其中任何的源代码,则必须把使用这些源代码的项目以及项目内的所有源代码和文档公开。否则禁止使用本程序源代码的任何部分。
- 您可以复制、分发和传播无限制数量的软件产品,但您必须保证每一份复制、分发和传播都必须是完整和真实的,包括所有有关本软件产品的软件、电子文档,版权和商标宣言。
- 作者特此申明对本软件产品之使用不提供任何保证,不对任何用户保证本软件产品的适用性,不保证无故障产生;亦不对任何用户使用此软件所遭遇到的任何理论上的或实际上的损失承担 责任。
- 如果您使用本软件,即表示已经默认接受了此协议。
[目录]
九、致谢
- 感谢我亲爱滴 Jane,让我在夜深人静的时候还有心情和精力去完善这个程序。
- 感谢 Kavana 的建议以及热心测试,以及一直以来各种非常聪明的想法和雷同的看法。
[目录]
Powered by Yonsm
电子邮件: Yonsm@msn.com
博客网站: WWW.Yonsm.NET
版权所有 (C) 2007-2009 Yonsm.NET,保留所有权利