#code=936T950 //GBK=936 BIG5=950 ASCII=0(default) ## ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 欢迎使用 PECMD2012 - WinPE Commander,功能强大的 WinPE 命令解释工具! ┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃PECMD - XCMD V2.2补充完善版,在XCMD V2.2基础上增加了 CALL、HOTK、FBWF等多条命令,在此向Yonsm等表示感谢!┃ ┃PECMD2012 官方网址:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=205402&extra=page%3D1 ┃ ┃PECMD2012 NonCopyRight,任何个人和组织(含商业组织)可随意免费使用,随意修改。技术支持可咨询作者。 ┃ ┃PECMD2012 是参考PECMD2.4源码,重新设计而成。帮助文档整理排版:988668 @2012年5月10日(后面附录!) ┃ ┃PECMD2012 英文版翻译:ddsony @April 3,2015 ┃ ┣━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃版号│☆PECMD v2012.1.88 fix ┃ ┣━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │★短小精干,运行迅速;支持常规扩展设置命令;内置多条命令,功能极其强大;支持调用外部EXE和DLL函数;┃ ┃特点│★支持格式统一的命令行参数和配置文件,登录操作完全使用INI文件配置,修改INI就能完全控制登录步骤; ┃ ┃ │★支持模块化、结构化和脚本化的配置文件;配置文件支持整行注释和行后注释,同时也支持空格缩进书写。 ┃ ┣━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │◎使用命令行参数,例如:要设置环境变量,执行"PECMD.EXE ENVI $PPPoE=OK"即可。 ┃ ┃ │◎使用配置文件,例如:"PECMD.EXE LOAD %SystemRoot%\PECMD.INI"。 ┃ ┃ │◎不用命令行参数,直接执行本程序,将显示本帮助信息;更多关于说明信息问题,请参阅“HELP”命令参数。┃ ┃ │◎命令参数支持环境变量解析(如"%TEMP%\X.TXT");命令不区分大小写;尖括号"<>"内的参数表示必须输入,方┃ ┃使用│ 括号"[]"内的表示可以省略。 ┃ ┃ │◎命令行模式默认关闭注释(不是LOAD执行);脚本模式默认开启注释(LOAD执行)可用 NOTE 或 COME 切换。┃ ┃ │◎通常情况下,您只需要编辑一个配置文件 PECMD.INI 放在磁盘的某个位置,里面列出需要执行的命令。然后 ┃ ┃ │ 在 WinPE 启动的时候执行"PECMD.EXE MAIN INI文件名(含路径,支持环境变量)"即可。 ┃ ┃ │◎脚本文件格式支持WCE、WCI、WCS、WCX、INI、INF、TXT、LOG等以及任意自定的格式,为了规范,PE 的 LOAD┃ ┃ │ 配置文件用 INI,驱动安装用 INF,而脚本则使用 WCE、WCI、WCS、WCX;个人测试建议用 WCI WCX 或在文件┃ ┃ │ 名称前加自定义的注释字符;而压缩一般使用 WCZ、WCM、WZM 等,日志使用 LOG (默认值),内置帮助文本┃ ┃ │ 用 TXT-ANSI 编码。自定脚本格式必须确保自定的脚本格式符合系统定义的文本脚本规格规范,否则会出错!┃ ┃ │▲注意:LOAD 命令如果用的是实际路径,路径里含空格的话,""引号一定不能省略,因为 LOAD可带参数。如:┃ ┃ │ LOAD "X:\Program Files\a.ini";而如果是变量引用且表面上看起来是连续的,可不加引号,如: ┃ ┃ │ LOAD %Program%\a.ini //省略了引号;详情参见LOAD备注。 ┃ ┃ │▲实验本脚本命令,请在 PECMDEDIT 或 PECMD 命令行;不要在 CMD 命令行。 ┃ ┃ │▲命令词主体: A-Z a-z 0-9 _ 汉字 。而" $#@+-|^&"等都是后缀开始标志。FIND-JPG 和 THREAD* FIND-JPG ┃ ┃ │ 这些语法都是非法的,但可以用 CALL FIND-JPG 和 THREAD* CALL FIND-JPG 的完整方式。 ┃ ┃ │▲EXEC*1 ... NAME=命令 收到一行信息后马上终止执行的命令 ┃ ┃ │▲尽量用PE变量少用环境变量,以使你的函数能在多线程环境继续使用。&CurDir ... &ERRORLEVEL 用户变量。┃ ┃ │△在 CMD 窗口或 WinGUI 程序中执行PECMD命令时,用一对百分号“%Desktop%”来使用PECMD内置的环境变量。┃ ┃ │△在 CMD 批处理文件中执行PECMD命令时,请用双对百分号“%%Desktop%%”来使用 PECMD内置的环境变量。 ┃ ┃ │△如果在命令行中使用,且参数中带有">"或"|"或"&"或"^",则命令后的参数必须用引号包围,否则将会被认为┃ ┃ │ 是重定向或管道操作符等。或在这些字符前面加个"^"。本程序支持引号参数解析。 ┃ ┃ │◎注意:下级局部变量可直接引用上级局部变量的值,但不推荐用于全局变量,因为容易引起逻辑结构混乱! ┃ ┃ │◇制作PE,一定要删除 HKLM\SOFTWARE\PELOGON ┃ ┃ │◇表示%而不是变量用%%标识; ┃ ┃ │◇路径变量语法标准:盘符:\%路径变量%\%路径变量%,命令器不会自动添加“:”与“\”,请注意! ┃ ┃ │◇命令语法标准1:ABCD [磁盘分区],[盘符字母],[等待时间] //参数为空时也不能忽略参数间的逗号! ┃ ┃ │◇命令语法标准2:ABCD [磁盘分区][,盘符字母][,等待时间] //参数为空时也可逆向忽略参数前的逗号! ┃ ┃ │◇【】内的参数是有顺序的! ┃ ┃ │☆除特殊情况外,请尽可能不要用单行嵌套命令语句的写法,应使用标准分行的写法,这样方便阅读和理解。 ┃ ┃ │▲PECMD.exe 退出码为最后的命令错误码。0为无错误。负数(或>0x7FFFFFFF)则为1。 ┃ ┃ │▲整理盘符命令要放在PECMD.INI最前面。 ┃ ┃ │▲命令前若干个^表示预先解释本命令几次。 ┃ ┃ │◇-[ ]LOGS调试信息 //本行只在LOGS中打印 ┃ ┗━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ WinCMD - 命令解释程序,支持创建窗口及以下窗口控件 ┃ ┣━━━━━━━━━━━━━┯━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━┫ ┃ComboBox 下拉选择框│Button 按钮控件│Picture-IMAG 图像区域控件│CheckBox 复选框控件┃ ┃Edit 编辑框控件│HotKey 系统热键│Popup-Menu 托盘图标菜单│Radio 单选框控件┃ ┃ProgressBar-PBAR进度条控件│Group 分组面板│Static-LABE 文本标签控件│Timer 定时器控件┃ ┃Tabl 表格控件 │List 列表控件│MEMO 文本编辑控件│BROW 浏览窗口 ┃ ┣━━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━┫ ┃ WinCMD - Windows Commander,内置以下环境变量的支持 ┃ ┣━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━┫ ┃CurDir &CurDir 配置文件目录│CurFile &CurFile 配置文件名称│CurDrv &CurDrv 配置文件驱动器┃ ┃Favorites 收藏夹全路径│IECache IE临时目录名│MyName &MyName 自身文件名┃ ┃Personal 我的文档目录│Programs 程序菜单目录│SendTo 发送到目录┃ ┃StartMenu 开始菜单目录│Startup 启动菜单目录│QuickLaunch 快速启动栏┃ ┃Desktop 桌面目录名 │&&__MAIN__ 主脚本中为1 │&__OldDir 启动时或LOAD前的目录┃ ┃&&ERROR ERROR 命令错误码 │&WM_PE_BASE PE消息起始 │&PE_IDBASE PE控件ID起始┃ ┃&PeExe 1=普通 0=内置脚本 -1=初始化│&SYSCODEPAGE 系统语言代码│&WM_TaskbarRestart 桌面重启消息┃ ┃&__PID &__PPID &__TID &__LastPID &__LastTID &__HINST 进程号 父进程号 线程号 刚创建线程PID/TID 进程句柄 ┃ ┃&&ERRORLEVEL EXEC等待程序退出码 │&bX64 3=PECMD64 1=WIN64 0=WIN32│&PECMDVER &PECMDBUILD 版本 ┃ ┃RANDOM 随机数变量(非负INT64) │_CD &_CD 实时当前目录 │ &__WinID &__LastWinID 当前窗口ID 刚创建窗口ID┃ ┃&__NMHDR.idFrom &__NMHDR.code &__NMHDR.hwndFrom WM_NOTIFY的参数 │&__LOGS 当前LOGS文件 ┃ ┃&__wParam.wID &__wParam.wNotifyCode WM_COMMAND的控件ID 和消息号 &PE_MENU_IDBASE 菜单起始ID ┃ ┃&__THIS 区别当前PE栈的唯一COOKIE &&__RET约定函数返回变量 %PeVar?类型:[~]off% ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ PECMD - WinPE Commander 命令解释、示例及说明 ┃ ┣━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'_END' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│_END ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│结束子过程,并继续执行调用该子过程的 CALL 命令的下一条命令。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■无。 ┃ ┃_END├──┼──────────────────────────────────────────────┨ ┃ │示例│_END ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※定义子过程的 _SUB 命令和 _END 命令必须单独一行。即 FIND、IFEX、TEAM 命令内不能定义子过程。┃ ┃ │ │※ _SUB 与 _END 之间的命令(即子过程)只被对应的 CALL 命令执行,主流程会跳过这些命令。 ┃ ┃ │ │※ _END 命令必须与 _SUB 命令一一匹配,且子过程内不能再定义子过程。 ┃ ┃ │ │※子过程放在配置文件的任意位置都可以被同一配置文件中的 CALL 命令调用,建议放在文件开始处。 ┃ ┃ │ │※该命令只能在配置文件中使用,不能在命令行下使用。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'_ENDFILE' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃_ F│格式│_ENDFILE[-IMPORT] ┃ ┃E I├──┼──────────────────────────────────────────────┨ ┃N L│功能│脚本的结尾。 ┃ ┃D E├──┼──────────────────────────────────────────────┨ ┃ │备注│※之后可以放点别的东西。代码级。后面根本不调入。 ┃ ┃ │ │※_ENDFILE-IMPORT只对IMPORT的文件有效,【FIND $1 = %&&__MAIN__%,】也有这个作用。后面丢弃。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'_SUB' '类' '窗口' '函数' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│_SUB <子过程名> [*] //*则为this函数,对其调用均为this调用 ┃ ┃ │ │_SUB <窗口名称>,<窗口形状>,[窗口标题],[事件],[窗口图标],[窗口类型],[蒙板] [, -ntab -nfocus ┃ ┃ │ │ -top -forcenomin -disminb -maxb -discloseb -nosysmenu -nocap -[dis]altmv -size -trap -na] ┃ ┃ │ │ -scale[f|:DPI] ┃ ┃ │ │_SUB 子过程名,*,,析构命令 //带析构命令函数(可含逗号)(返回前自动执行) ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│定义类或定义子函数(过程)或定义一个窗口。可嵌套定义子类 ┃ ┃ 类 ├──┼──────────────────────────────────────────────┨ ┃ │参数│■子过程名: 字符串。后面接“,*”有持久栈;接“,#”则为隐藏窗口。 ┃ ┃ 窗 │ │■窗口名称: 字符串,窗口名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ 口 │ │■窗口标题: 文字。 ┃ ┃ │ │■窗口形状: 窗口位置和大小,格式为,左上宽高均为数值,省略"左上"时窗口居中。 ┃ ┃ 函 │ │■事件: 关闭窗口时执行的命令,必须是 WinCMD.EXE 支持的命令。=开始不关闭 ┃ ┃ 数 │ │■窗口图标: 窗口标题栏和任务栏的图标,格式为<图标文件名#ID> ┃ ┃ │ │■窗口类型: [-][#][[$]数值][:[透明色]],"-"为无标题栏,"#"为无边框窗口。数值1-99为透明度,数┃ ┃ │ │ 值前的$表示0-255的值;数值100(255)为隐藏窗口。透明色表示要透明的颜色,默认为背景色。用透明┃ ┃ │ │ 且需要显示文本时,字体Quality设3。 ┃ ┃ │ │■蒙板: [%FFFFFF%][*][<[W:H]>]bmpname 异形窗口蒙板,一般为黑白单色BMP(可RLE压缩格式),GIF,JPG┃ ┃ │ │ 。[%FFFFFF%]为透明色,默认0(黑色)。*[*][~][只]做背景,~缩放,#ID表示内部BMP,ID为资源ID┃ ┃ │ │■状态: -top:顶端;-forcenomin:不被最小化;-disminb:禁止最小化按钮;-maxb:使能最大化按钮 ┃ ┃ │ │ -discloseb:禁止关闭按钮;-nosysmenu:没有系统菜单;-nocap:没有标题栏 -nfocus无焦点 ┃ ┃ │ │ -disaltmv:禁止按下ALT用鼠标移动之;-size:可以调整大小。-trap关闭按钮不退出。 ┃ ┃ │ │ -ntab没有键盘焦点 -csize 大小为客户区大小 -na不激活 -scale:win8缩放 ┃ ┃ │ │ -scalef 支持XP缩放 -scale:DPI 指定缩放DPI -nxp:无XP视觉 ┃ ┃_SUB├──┼──────────────────────────────────────────────┨ ┃ │示例│_SUB DoLoop 或 _SUB Windows1,W360H440,WinCMD功能演示,EXEC $使用说明.TXT,%IconFile%#19,20 ┃ ┃ │ │_SUB F1,*,,IFEX #[ %&h%<>0xFFFFFFFF && %&h%>0 ],CALL $Kernel32.dll,CloseHandle,#%&h% ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※子函数名或窗口名的第1个字符不能是"$",命令关键词_SUB与子过程名或窗口名之间必须是1个空格。 ┃ ┃ │ │※名称的第1个字符为&表示是局部名称,线程中不冲突。也可进入线程局部模式达到。 ┃ ┃ │ │※若有多个_SUB命令,这些命令定义的名称不能重复,不能近似,也不能用这些名称设置成环境变量。 ┃ ┃ │ │※本命令与_END命令必须成对出现,均不能在命令行中使用,其它参照_END命令、CALL命令的说明。 ┃ ┃ │ │※要设置窗口的标题,可以使用 "ENVI @窗口名称=窗口标题" 来设置 ,参照 ENVI 命令的说明。 ┃ ┃ │ │※当"窗口类型"设置了透明度后(数值不为0),则 IMAG 控件无法显示 GIF 动画。 ┃ ┃ │ │※子过程本身就具有嵌套性(LAMBDA),可以访问调用者的PE变量。 ┃ ┃ │ │※不同类或不同子类的子函数名可以重复。一个类可访问父类的成员函数。嵌套定义要缩进至少一空字符┃ ┃ │ │※访问其它类的子函数要用类域::连接类名,可多级,以::开始表示从顶级开始。 ┃ ┃ │ │※有自己的堆栈,退出时自动销毁PE变量和锁,控件,HKEY。 ┃ ┃ │ │※约定.为类数据成员标志。如ENVI aa.bb.cc.d=1 ┃ ┃ │ │※扩充后_SUB 是添加自定义命令的快捷方法. (不需要CALL,同内部命令) ┃ ┃ │ │※普通函数也可以当作窗口对象用 CALL @调用,可以生成多个对象(纤程)。 ┃ ┃ │ │※"ENVI @窗口或控件名称.Enable=[#]数值",0为禁用状态;1为可用状态(不响应)。#用于子线程 ┃ ┃ │ │※"ENVI @窗口或控件名称.Visible=[*]数值"设置可见状态;0为不可见,1为可见。*为第2种方案. ┃ ┃ │ │ >=1依次为:SW_SHOW, SW_SHOWNORMAL, SW_MAXIMIZE, SW_MINIMIZE, SW_RESTORE, SW_SHOWDEFAULT, ┃ ┃ │ │ SW_SHOWMAXIMIZED, SW_SHOWMINIMIZED, SW_SHOWMINNOACTIVE, SW_SHOWNA, SW_SHOWNOACTIVATE, ┃ ┃ │ │ SW_FORCEMINIMIZE (见补充说明.doc) ┃ ┃ │ │※没有标题的窗口,可以按住ALT键,按住鼠标左键拖动窗口。 ┃ ┃ │ │※"ENVI @窗口.Paint=函数名",设置画布回调函数,函数参数为HDC 宽 高. ┃ ┃ │ │※"ENVI @窗口或控件名称.InvalidateRect=<左:上:右:下>|#WID|@SubNAME][~扩量][:擦除]",刷新。 ┃ ┃ │ │※"ENVI @窗口或控件名.Cursor=光标号[,][DLL文件]"。 //设置窗口的光标。没有逗号指系统光标 ┃ ┃ │ │※"ENVI @窗口或控件名.Font=[字体大小][:[字体名][字体修饰]]"。 //设置字体,参见EDIT ┃ ┃ │ │※"ENVI @窗口或控件名.bkcolor=[背景颜色值]"。 //设置背景色,空为清除 ┃ ┃ │ │※"ENVI @窗口或控件名.trans=0/1"。 //0x1设置背景透明模式 0x2:完全透明 ┃ ┃ │ │※"ENVI @窗口/控件名.style=[@*]去风格[:加风格]"。ENVI @@style=%WID%:[@*]v1:v2 //@直接*扩展 ┃ ┃ │ │※"ENVI @窗口.HitTest=高[:宽:x:y]"。 //设置可拖动动窗口的敏感区域。高<=0则取消 ┃ ┃ │ │※"ENVI @窗口或控件名.cmd[?]=变量名|命令" //动态设定响应命令 ?需要ENVI^ QueryCmd=1 ┃ ┃ │ │※"ENVI @窗口或控件名.nxp=" //禁止XP视觉 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │★类和实例:一个类可以同时生成个实例。每个实例可以有自己的名字。窗口实例中 this 指代当前实际┃ ┃ │ │ 的窗口实例。 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※ ENVI @@Enable=窗口ID:[#]数值",0为禁用状态;1为可用状态(不响应)。#用于子线程 ┃ ┃ │ │※ ENVI @@Visible=窗口ID:[*]数值",设置可见状态;0为不可见,1为可见。* 为第2种方案。同上。 ┃ ┃ │ │※ ENVI @@Enable=?窗口ID:变量名",返回可用状态。 ┃ ┃ │ │※ ENVI @@Visible=?窗口ID:变量名",返回可见状态。 ┃ ┃ │ │※ ENVI @窗口控件名.Enable=?变量名",返回可用状态。 ┃ ┃ │ │※ ENVI @窗口控件名.Visible=?变量名",返回可见状态。 ┃ ┃ │ │※ ENVI @@IsWindow=?窗口ID:变量名",返回是不是窗口ID。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'POS' '位置' '大小' '层级' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃位置│参数│ENVI @窗口和控件名.POS=左:上:[@]宽:高:层级:透明度:前置:激活:父窗口ID::客宽:客高 //@实际宽高┃ ┃大小│ │ENVI @窗口和控件名.POS=?[@]左名:上名:[@]宽名:高名:X0名:Y0名::激活名:父ID名:客宽:客高 //查询┃ ┃层级│ │ENVI @@POS=窗口ID:左:上:[@]宽:高:层级:[$]透明度:前置:激活:父窗口ID::客宽:客高 ┃ ┃ │ │ENVI @@POS=?窗口ID:[@]左名:上名:宽名:高名:X0名:Y0名::激活名:父窗ID名:客户宽名:客户高名//查询┃ ┃ │ │格式1为设置。层级1=底层,2=取消最顶层,3=顶层,4=钉在最顶层。某位空着或*不变 ┃ ┃ │ │前置1为前置,激活1为激活。 透明度前的$表示0-255格式。 ┃ ┃ │ │格式2为查询,(X0,Y0)为客户区起点相对坐标。某位可空着。@左返回屏幕绝对坐标。@宽返回实际宽高 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│ ENVI @WIN1.POS=%X1%:300:300:180:4 //移动改变大小,钉在最顶层 ┃ ┃ │ │ ENVI @B1.POS=?X2:Y2:W2:H2 //查询大小 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'消息映射' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■ENVI @窗口和控件名.MSG=[_$*+]消息号:[:[wPrm参数名],[lPrm参数名],][<]执行命令//定义消息映射┃ ┃ │ │ 捕捉默认前部命令;_为后部命令;$为替代命令,不执行系统响应,此时能返回结果码;*用于捕鼠器B的┃ ┃ │ │ 命令。+为超级捕捉。“执行命令”以-号开始,则从所在窗口开始执行(执行栈)。<:禁止Logs命令 ┃ ┃ │ │■ENVI @窗口和控件名.POSTMSG=[:变量名;]消息号[;参数wPrm[;参数lPrm]] //异步发送消息 ┃ ┃ │ │■ENVI @窗口和控件名.SENDMSG=[:变量名;]消息号[;参数wPrm[;参数lPrm]] //同步发送消息 ┃ ┃ │ │■ENVI @@POSTMSG=[:变量名;]窗口号;消息号[;参数wPrm[;参数lPrm]] //异步发送消息 ┃ ┃ │ │■ENVI @@SENDMSG=[:变量名;]窗口号;消息号[;参数wPrm[;参数lPrm]] //同步发送消息 ┃ ┃ │ │ 上两个的窗口号可为*[?等待超时[?间隔]][*窗口类*][标题] ┃ ┃ │ │■适用于_SUB窗口和控件。消息号见:WM_消息.WCS,可以IMPORT . 变量名返回结果(含义因消息而定) ┃ ┃ │ │■消息号以#开头为PECMD应用自定义消息1-N。wPrm lPrm参数名, 参数名可以被引用。等号后的_表示下 ┃ ┃ │ │ 半部响应模式,在系统响应之后响应【对衍生消息会以相反的顺序响应】。 上面;可以用逗号。 ┃ ┃ │ │ 消息参数可以是数字,@PE变量名(ENVI$# 填充非字符串对象),$字符串(只适用于SENDMSG)。 ┃ ┃ │ │ .MSG=的消息号可为:#[控件ID][#小消息号]。 ┃ ┃消息├──┼──────────────────────────────────────────────┨ ┃映射│示例│ ENVI @窗口1.MSG=#1::wp,lp,MESS- HELLO wp=[%wp%],lp=[%lp%]@#OK ┃ ┃ │ │ ENVI @窗口1.POSTMSG=#1,1,2 //触发#1消息 ┃ ┃ │ │ ENVI @窗口1.MSG=%&WM_LBUTTONUP%:MESS 你单击了 ┃ ┃ │ │ ENVI @Edit1.MSG=%&WM_MOUSEENTER%:ENVI @Edit1=鼠标进来了 ┃ ┃ │ │ ENVI @@SENDMSG=%__WinID%:#2;@str1;@str2 或 ENVI @@SENDMSG=%__WinID%:#2;$Line11;$abc11 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │范例│PECMD怎样获取CMD命令行的回显?(不通过临时文件)如要获取CMD命令“dir d: /d”的回显 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │ EXEC* &V=!cmd.exe /c dir d: /d ┃ ┃ │ │ MESS. [%&V%]@DEBUG#OK ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│ ※EXEC 还可将命令的输出实时显示在控件上(如EDIT/MEMO/LABE),详细请参阅EXEC命令的说明。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'代码段' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│ {} 包围的一段代码 ┃ ┃ │ │ TEAM SET &cmd={命令1 %NL% 命令2 %NL%...}| %&cmd% //(变量)嵌入时多行,换行符间隔 ┃ ┃ │ │ (命令1 %NL% 命令2 %NL%...) //(明码)嵌入时多行,换行符间隔 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│定义一段代码。有自己的堆栈,退出时自动销毁PE变量和锁,控件,HKEY。相当于内部函数。 ┃ ┃ 代 │ │{后紧接一个*,为this代码段;没有自己的堆栈,没有自动销毁功能。纯范围指示。 ┃ ┃ 码 ├──┼──────────────────────────────────────────────┨ ┃ 段 │示例│TEAM { wait 10 | LOCK 火车票 | 处理火车票 123 | 处理火车票2 } ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※可在文件级,也可在函数内使用。还可用于命令组。可以嵌套。 ┃ ┃ │ │※文件级和函数级{}必须是一行第一个非空字符。命令组级{必须在一组命令前的最开始,}不限。 ┃ ┃ │ │※条件代码段 ┃ ┃ │ │ IFEX/FIND 条件,[!] //有!表示为ELSE部分,无或!!则为IF部分,只能取其一 ┃ ┃ │ │ { ....多行代码 ┃ ┃ │ │ } ┃ ┃ │ │ IFEX/FIND 条件,[!] { 命令1 {不在行首,慎用,不能被嵌套 ┃ ┃ │ │ ....命令2... 多行代码 //条件真[假]部分 ┃ ┃ │ │ } ┃ ┃ │ │ IFEX/FIND 条件, //不能带! ┃ ┃ │ │ { ....多行代码 //条件真部分 ┃ ┃ │ │ }! ┃ ┃ │ │ { ....多行代码 //条件假部分,!紧挨},!后面可若干空字符,再接{ ┃ ┃ │ │ } ┃ ┃ │ │ IFEX/FIND 条件, { 命令1 //不能带! {不在行首,慎用,不能被嵌套 ┃ ┃ │ │ ....命令2... 多行代码 //条件真部分 ┃ ┃ │ │ }! ┃ ┃ │ │ { ....多行代码 //条件假部分,!紧挨},!后面可若干空字符,再接{ ┃ ┃ │ │ } ┃ ┃ │ │ IFEX/FIND 条件, 命令! //条件真部分,!后为空 ┃ ┃ │ │ { ....多行代码 //条件假部分, ┃ ┃ │ │ } ┃ ┃ │ │ LOOP/FORX 条件,[!] [FORX变量,] ┃ ┃ │ │ { ....多行代码 ┃ ┃ │ │ } ┃ ┃ │ │ 说明:内部可嵌套。{}必须在行首,行首可连续混合多个{}。 ┃ ┃ │ │ {...} 可以整个嵌在一行内。IFEX/FIND/LOOP/FORX 条件,[!!] ...{...}... ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'LAMBDA' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│[]空格分隔的参数表{LAMBDA函数体} ┃ ┃ L ├──┼──────────────────────────────────────────────┨ ┃ A │功能│定义一段代码。有自己的堆栈,退出时自动销毁PE变量和锁。相当于内部函数,有自己的参数表。 ┃ ┃ M ├──┼──────────────────────────────────────────────┨ ┃ B │示例│[]P1 P2 P3 "345 667"{ MESS [LAMBDADEMO] %* @DEBUG #OK } ┃ ┃ D ├──┼──────────────────────────────────────────────┨ ┃ A │备注│※可在文件级,也可在函数内使用。还可用于命令组。可以嵌套。 ┃ ┃ │ │※文件级和函数级{}必须是一行第一个非空字符。命令组级{必须在其组命令前的最开始,}在|前或行尾 ┃ ┃ │ │※命令组级 LAMBDA 函数体会作为变量串解释,所以是动态的,同时"%"要用"%%"。 ┃ ┃ │ │※有自己的堆栈,退出时自动销毁PE变量和锁,控件,HKEY。 ┃ ┃ │ │※_SUB函数其实也是LAMBDA,LAMBDA特点是可以使用调用者堆栈。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'ADSL' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│ADSL [宽带帐号编码],[宽带密码编码],[拨号重试次数|stop|list[on]],[宽带连接名称|*|返回名] ┃ ┃ │ │ADSL-wlan SSID|&ProfileVar,密码,加密方式[,序号] //加密方式默认为WPA2PSK AES (中间1个空格) ┃ ┃ │ │ADSL-wlan 序号,,[?][^|*|-]list|query[all]|scan,返回名 //query:序号 guiid State Desc ┃ ┃ │ │ list:SSID SignalQuality Flags BssType NumBssid bConnectabl NotConnecReason bSecurityEned┃ ┃ │ │ DefaultAuthAlgorithm DefaultCipherAlgorithm bMorePhyType NumberOfPhyType PhyTypes[] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│建立ADSL宽带连接,并按指定的用户帐号编码和用户密码编码进行宽带拨号连接。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■宽带帐号编码: 字符串,由 BASE 命令对"ADSL宽带帐号"计算出的BASE64变异编码。 ┃ ┃ │ │■宽带密码编码: 字符串,由 BASE 命令对"ADSL宽带密码"计算出的BASE64变异编码。 ┃ ┃ │ │■拨号重试次数: 数字,支持16进制数值,省略该参数时为默认值1。 ┃ ┃ │ │■宽带连接名称: 字符串,位于"网上邻居" ==> "属性" 里的ADSL宽带连接名称。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ADSL│示例│ADSL MhFTxYzM4AUbtR2cuM2btB==,XlmbUV2c0B==,,ADSL宽带连接 或 ADSL ,,,我的宽带连接 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※"宽带帐号编码"和"宽带密码编码"必须由BASE命令产生,以确保用户宽带资料的安全。 ┃ ┃ │ │※"拨号重试次数"表示拨号不成功时尝试的次数,设置为0或小于0时表示反复拨号至成功为止。 ┃ ┃ │ │※"宽带连接名称"可以省略,当系统中已存在宽带连接时,ADSL命令将用系统存在的宽带连接进行拨号;┃ ┃ │ │ 当系统中不存在有效的宽带连接时,ADSL命令会按参数建立指定的宽带连接,并按参数进行拨号; ┃ ┃ │ │ 当系统不存在有效宽带连接且ADSL命令又不指定宽带连接名称时,WinCMD命令会建立一个默认的宽带连┃ ┃ │ │ 接,并按参数进行拨号;宽带帐号编码或宽带密码编码省略时,ADSL只建立宽带连接但不拨号。 ┃ ┃ │ │※该命令需系统PPPOE组件的支持;命令既可在配置文件中使用,也可在命令行中使用。 ┃ ┃ │ │※例1将使用"ADSL宽带连接"按指定的参数拨号1次;例2只建立名为"我的宽带连接"的PPPOE拨号连接。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'BASE' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│BASE <字符串>[,变量名] ┃ ┃ │ │BASE* [-u] <字符串>[,变量名] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│ADSL命令的辅助命令,计算字符串BASE64变异编码,用于加密用户ADSL宽带的密码等数据。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■字符串: 要计算BASE64变异编码的字符串,支持中英文混合字符串,区分大小写。 ┃ ┃ │ │■变量名: 用于保存计算结果的变量名。 ┃ ┃BASE├──┼──────────────────────────────────────────────┨ ┃ │示例│BASE mdyblog@163.com,AdslUserName 或 BASE PassWord,AdslPassWord ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※用BASE命令计算字符串BASE64变异编码时,字符串的字符数限定在256以内(不能含","字符)。 ┃ ┃ │ │※给出变量名,BASE命令计算结果保存到指定的变量中,示例2可通过环境变量%AdslPassWord%来引用。 ┃ ┃ │ │※省略变量名,BASE命令的计算结果以消息窗口的形式显示,同时也将结果保存到粘帖板中。 ┃ ┃ │ │※BASE命令采用BASE64变异算法,计算结果与常规算法不同以确保用户数据安全,也不提供解码命令。 ┃ ┃ │ │※BASE* 是常规算法,提供解码命令。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'BROW' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│BROW [-fix] <变量名称>,[[*|&]初始路径],[提示文字],[扩展名称],[附加标志] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│浏览磁盘文件和目录。 -fix:破解系统目录屏蔽(不一定成) ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■变量名称: 用于保存浏览结果的变量名。 ┃ ┃ │ │■初始路径: 为浏览窗口默认选中的文件或目录,省略该参数时定位到系统默认的路径;前导符"*"为浏 ┃ ┃ │ │ 览目录对话框,前导符"&"为保存文件对话框,省略前导符为打开文件对话框。 ┃ ┃ │ │■提示文字: 可以省略,省略时默认的文字为系统默认的文字提示。 ┃ ┃ │ │■扩展名称: 浏览指定扩展名的文件,省略表示所有文件。 ┃ ┃ │ │ 也可为多种选择串:【说明1|*.后缀1|说明2|*.后缀2|】如:INI文件|*.INI|All|*.*| ┃ ┃BROW│ │■附加标志: 浏览目录对话框界面风格:默认为"无[编辑框],有[新建文件夹]按钮,不显示文件", ┃ ┃ │ │ 0x10为有编辑框标志,0x200为无新建文件夹按钮,0x4000为混合选择文件和目录 ┃ ┃ │ │■选择文件: 0x200为可多选,0x80000为浏览器风格0x2000为新建警告,0x02000000排除最近访问快捷方┃ ┃ │ │ 式,0x800000为可变大小,0x1000为文件必须存在,0x40000短文件名,0x2为覆盖警告, ┃ ┃ │ │ 0x1为勾选只读,0x800为无效路径警告,0x8000为排除只读文件,0x4去掉只读勾选器。 ┃ ┃ │ │ 0x10000000可选择只读或隐藏文件 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│BROW Boot_Ini,C:\BOOT.INI,请选择一个文件,INI 或 BROW Tag,*C:\Windows,请选择一个目录 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※目录浏览框"有编辑框、无新建文件夹按钮、显示文件"三项标志之和的16进制值为0x4210。 ┃ ┃ │ │※本命令会打开一个文件目录浏览对话窗,让用户浏览磁盘文件目录,用户可选择某个文件或目录。 ┃ ┃ │ │※选择结果将保存在指定的进程环境变量中。示例2可通过环境变量 %Tag% 来引用。 ┃ ┃ │ │※BROW命令一般在INIT命令之后或在桌面执行。 ┃ ┃ │ │※本PECMD和旧版不同,BROW不再影响当前工作目录,因而也不再赖上目标目录。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'CALC' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│CALC[-txt-cb-[Lfr:Lto[:Rfr:step]]] [-gui -base=2|8|10|16|N -err=出错值] ┃ ┃ │ │ [[[#]变量]=]表达式1[#[#][小数位数][E|F|G]]┃ ┃ │ │CALC 格式 [[[#]变量]=][[#|$]子名1=]表达式1及后缀;或换行[[#|$]子名2=]表达式2及后缀;... ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│将表达式的运算结果保存在"变量"中。E为科学计数法,F为小数形式,G为自动取较简洁方式。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■-base=表示输出进制。结果:2进制为0bNNNN ;8进制为0oNNNN ;16进制为0xNNNN ;这些数据可以直 ┃ ┃ │ │ 接参与CALC运算。其它非标准进制N没有前缀,也不能参与运算。也适用浮点数(取整)。-gui:图形界面┃ ┃ │ │■前导"#"表示所有变量按 int64 型数据来处理,省略或$该前导表示所有变量按double型数据来处理; ┃ ┃ │ │■表达式中可以是具体数值,也可以是已存在的变量; 支持科学计数法输入。 ┃ ┃CALC│ │■支持运算符号: 或"||";与"&&";异或"@@";位或"|";位与"&";位异或"@";=,<>;>,>=,<,<=;"+" ┃ ┃ │ │ ,"-";乘"*",除"/",余"%";幂"^",和括号()[]{},级别依次优先。项数不限。数据(包括浮点数)支持 ┃ ┃ │ │ TGMKS后缀。K=1024 S=512 。减号后需一个空格。 ┃ ┃ │ │ 支持的数学常数: e (表示自然常数)、pi (表示圆周率π),共2个数学常量。       ┃ ┃ │ │■后缀"#" : 表示运算结果按double型数据来处理时,保留的小数位数,默认尽可能多,最多16位; ┃ ┃ │ │ 默认清除后面无意义的0;#后再加一个#则保留0; 四舍五入。         ┃ ┃ │ │ 支持的数学函数: abs(a) 绝对值函数、arccos(a) 反余弦函数、arcctg(a) 反余切函数┃ ┃ │ │ arcsin(a) 反正弦函数、arctan(a) 反正切函数、ceil(a) 向上整数┃ ┃ │ │ cos(a) 余弦函数、ctg(a) 余切函数、deg(a) 弧度转角度┃ ┃ │ │ div(a,b) 整除函数、exp(a) e的幂函数、frac(a) 取小数函数┃ ┃ │ │ floor(a) 向下整数、hypot(a,b) 弦长函数、int(a) 取整函数┃ ┃ │ │ lg(a) 常用对数、ln(a) 自然对数、log(a,b) 对数函数┃ ┃ │ │ max(a,b) 最大值函数、min(a,b) 最小值函数、mod(a,b) 余数函数┃ ┃ │ │ pow(a,b) 幂函数、pow10(a) 10的幂函数、rad(a) 角度转弧度┃ ┃ │ │ rand(a) 随机函数、round(a) 4舍5入取整、shl(a,b) 位左移函数┃ ┃ │ │ shr(a,b) 位右移函数、sin(a) 正弦函数、sqrt(a) 开方函数┃ ┃ │ │ tan(a) 正切函数、xor(a,b) 位异或函数、not(a) [可~a] 按位反┃ ┃ │ │ lnot(a) [可!a] 逻辑反 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│◆ CALC #Sum = 128 + 32*22 或 CALC Sum = %Datum1% + %Datum2% * 32 ┃ ┃ │ │◆ CALC #Result = 128 * ( 64 +66 )或 CALC Result = %Datum1% * ( %Datum2% + 12 ) ┃ ┃ │ │◆ CALC 1+3 或 CALC V= &v1=1+3;%&v1%*100 或 CALC = &v1=1+3;%&v1%*100 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※"变量"可以用 ENVI 命令来直接设置(赋值),也可以是 CALC 命令运算赋值的结果; ┃ ┃ │ │※要比较数值大小还可用IFEX命令来判断。 ┃ ┃ │ │※16位10进位以内的数据,浮点/整数处理没有任何区别。±9007199254740991 ┃ ┃ │ │※为了使用%方便,%n%*等参数禁止,需要的用ENVI转换成变量引用或命令前加^。TEAM中用|要加|。 ┃ ┃ │ │※获取随机数:%RANDOM%直接引用,为每次都不同的 63 位正整数。 也可以 RAND 变量名 或 ROUND()。┃ ┃ │ │ 0----9: CALC #R0_9=%RANDOM% % 10 或 RSTR R0_9=1,%RANDOM% 或 ROUND(10) ┃ ┃ │ │※没有变量名则显示结果。可以分号或换行间隔多个表达式。 ┃ ┃ │ │※CALC及PECMD涉及的整数极限范围为:-0x8000000000000000~0x7FFFFFFFFFFFFFFF,浮点数无此限制 ┃ ┃ │ │※-[f1:t1[:f2]] 为向量操作 %%d为游标,参数为左侧起止,右侧开始 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'CALL' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│CALL $[? --cd --nrcd --c --ret:返回名 ]DLL路径|*句柄[,函数名][,[#]参数1][,...[,[#]参数20 ┃ ┃ │ │CALL $[? --cd --nrcd --c ]--ret:* DLL路径,函数名, [返回名][,[#]参数1][,..[,[#]参数20 ┃ ┃ │ │CALL $--ret:返名 [--cd --nrcd ] ,-LoadLibrary,[^]DLL路径 //加载DLL得到句柄 ^自释放 ┃ ┃ │ │CALL $--ret:返名 [&&DllMemVar],-LoadLibrary,*[文件名]#资源号[|类别]//加载内存DLL句柄,自释放 ┃ ┃ │ │CALL $--ret:返名 ,-GetProcAddress,*句柄,函数名 //取得函数的地址 ┃ ┃ │ │CALL $[--ret:返回名] ,-FreeLibrary,*句柄 //释放DLL句柄 ┃ ┃ │ │CALL $--win [--qd@ --cd --nrcd --ret:返回名 ]DLL路径,函数名,命令行参数 //rundll32 ┃ ┃ │ │CALL $--cpl CPL路径, //控制面板文件 ┃ ┃ │ │CALL [前导]<子过程名/窗口名> [命令行参数] ┃ ┃ │ │CALL * <子过程名> [命令行参数] // this调用 ┃ ┃ │ │CALL <前导><窗口类名:窗口实名> [命令行参数] //生成类的实例 ┃ ┃ │ │CALL @-sub[:@-#LxTyWwHh]] [前导]<窗口名称> [命令行参数] //外置子窗口 @保持父子 -#有标题边框 ┃ ┃ │ │CALL @--popmenu[:x.y[:对齐]] <窗口名> [参数表] //弹出式菜单 ┃ ┃ │ │CALL --mem 变量名 [*] [命令行参数] //运行内存动态函数代码 *this调用 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│调用DLL函数 或 调用子过程。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│※前导"$"表示调用DLL函数,--c 为C调用规则。如果函数名称为*,那么只是DLL预加载(后面调用更快),多┃ ┃ │ │ 次调用安全。指定DLL路径、函数名和参数。如果省略函数名,将调用"DllRegisterServer"。参数默认┃ ┃CALL│ │ 为UNICODE字符串。前导"@"则为窄字符串,"#"则表示整数。最多支持20(C调用为100)个函数参数。 ┃ ┃ │ │ --cd 执行前切换到目标目录,--nrcd/--rcd 为执行后(不)恢复目录。不明DLL多线程中另开PECMD执行┃ ┃ │ │ --qd都有前导,#整数,*PE变量名,$字符串,=原始串。 ┃ ┃ │ │ --qd#/--qd*/--qd$/--qd@/--qd=/--qd~ 参数全为整数/PE变量名/字符串/窄字符串/原始串/UTF8串。 ┃ ┃ │ │ --m内存中运行。 --bool BOOL型的API。DLL路径可以是*[文件名]#资源号[|类别](可CMPS),此时句┃ ┃ │ │ 柄为*数字。DLL(可CMPS) --co/--nco 注册DLL时初始化DLL(默认)或不。--1 后面全部为一个参数 ┃ ┃ │ │ 地址调用:DLL路径写为#,函数名称直接写函数地址。 --sret返回符号数 --16返回16进制 ┃ ┃ │ │ 查询地址:? 为查询地址。存入返回名。 ┃ ┃ │ │■前导"@"表示调用由_SUB命令定义的窗口,可以在_SUB命令定义的窗口内执行CALL @调用另一个窗口。 ┃ ┃ │ │■前导"@*"表示并行调用由_SUB命令定义的窗口。和父窗口可同时操作。关闭前不能执行下一命令。 ┃ ┃ │ │■前导"@-"表示背景调用由_SUB命令定义的窗口。继续执行下面的命令。但某些费时的操作还是会阻塞。┃ ┃ │ │■前导"@~"表示后台调用由_SUB命令定义的窗口。费时的操作也不会阻塞。 ┃ ┃ │ │■前导"@+"表示后台调用由_SUB命令定义的窗口。费时的操作也不会阻塞.弃儿窗口.程序退出不等其关闭┃ ┃ │ │■前导"@^"类似@*,但父窗口不会挡住子窗口,可用于纯事件父窗口。 ┃ ┃ │ │※省略前导"$"表示调用子过程,参数为子过程名称。 ┃ ┃ │ │■函数参数格式:子过程和窗口中%0,%1,%2,...%n为子过程名/窗口名称、第一、第二...第n个参数,┃ ┃ │ │ %#为参数个数。%*为%1起全部。%~0,%~1,%~2,...%~n 就是去掉最外面的双引号,%@为%0起全部。 ┃ ┃ │ │※CALL可以省掉,与此同时@也可以省掉。如 CALL @WIN1 a b c 可以 WIN1 a b c ┃ ┃ │ │※弹出式菜单:x.y为菜单坐标,省略为当前鼠标位置。 WM_MENUSELECT为菜单悬停消息,序号为 ┃ ┃ │ │ (%wParam%&0xFFFF)-%PE_MENU_IDBASE%。 选择:%&__MenuId% %&__MenuInx% ┃ ┃ │ │※"CALL @--"卸掉Win环境。"CALL @"初始化Win环境,任何地方都能执行WIN相关命令。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│※调用DLL函数: CALL $SHELL32.DLL,DllInstall,#1,U ┃ ┃ │ │※调用子过程 : FIND MEM>127,CALL EXPLORER_SHELL!CALL CMD_SHELL ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※DLL路径: 可以是 *句柄 ┃ ┃ │ │※调用DLL函数: DLL中的函数默认按PASCAL调用规则,除非带--c(不明白什么意思的话,不理他)。 ┃ ┃ │ │ -DllRegisterServer:注册 -DllUnregisterServer:反注册 ┃ ┃ │ │※调用子过程 : CALL命令只能调用同一配置文件内的子过程,CALL命令调用子过程的功能不能在命令行 ┃ ┃ │ │ 中使用,其它参照_SUB和_END命令的说明。 ┃ ┃ │ │※普通函数也可以当作窗口对象用 CALL @调用,可以生成多个对象(纤程)。关闭由内部"KILL \",或在内┃ ┃ │ │ 部用"ENVI @函数名=名字甲"(默认为CALL命令行),在外部可以用 "KILL \名字甲" 销毁对象。 ┃ ┃ │ │※格式4中,this指代实际的窗口。 ┃ ┃ │ │※格式2/4中某一参数如果含有空字符,需要双引号括起来。否则会被分断。 ┃ ┃ │ │※创建窗口后%&&__LastWinID% 为刚创建窗口的唯一ID。 %&__WinID% 为本窗口ID。 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※this调用:函数在调用者的栈上运行。主要是将&&初始化代码写成函数。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'CHEK' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│CHEK [-right -center -scale[:[大小][:图片]]] [*] <名称>,<形状>,[标题],[事件],[状态] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在窗口内建立一个复选框控件。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│ <复选框名称>前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │ │■复选框名称: 字符串,复选框的名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■复选框形状: 复选框位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■复选框标题: 复选框上的文字,用于描述复选框的功能或说明。 ┃ ┃CHEK│ │■复选框事件: 点击该复选框时执行的命令,必须是 WinCMD 支持的有效命令。 ┃ ┃ │ │■复选框状态: 数字,1或-1为钩选状态,0,2或-2为没有钩选,小于0为灰色不可用状态,±16不可见。┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│CHEK Check1,L180T336W100H20,可写挂载,,1 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※该命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※环境变量: %复选框名称% 为复选框标题,设置标题,可用 "ENVI @复选框名称=复选框标题" 来设置。┃ ┃ │ │※可用"ENVI @复选框名称.Check=数值"来设置复选框钩选状态,数值0为未钩选状态;非0为钩选状态。 ┃ ┃ │ │※"ENVI @复选框名称.Enable=[#]数值",0为禁用状态;1为可用状态(不响应)。#用于子线程 ┃ ┃ │ │※可用"ENVI @复选框名称.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※可用"ENVI @控件名称.*del="来删除。 -scale:内部也缩放 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'CODE' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│CODE [*nobom] [*transonly] [*[*]]-srcFmt,srcfile,[*[*]]-dstFmt,dstFile ┃ ┃ │ │CODE *jm PeVar,+|-|^|#|>|.,数据或源偏移,粒度,偏移,字节数[,StepS,Loops[,StepD]] ┃ ┃ │ │ //^异或#交换>循环右移.设置&与|或?返名位[±Of]查询 Σ名累和 Π名累积 Ω名计数 粒度1/2/4/8 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃CODE│功能│编码转换 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■*nobom 不输出BOM;*transonly -GBK -BIG5 之间转换,但不转换编码,只翻译; ┃ ┃ │ │■srcFmt:源格式;-dstFmt:目标格式 。有 -UNICODE -UNI -UNICODEB -UNIB -ANSI -UTF8 -UTF7 ┃ ┃ │ │ -GBK -BIG5 -数字 - ,其中-为自然显示格式,数字为标准代码号。-srcFmt前的*/***表示 srcfile ┃ ┃ │ │ 是一个待转换的HEX串/PE名;*-时srcfile前后的空格都转。-dstFmt前的*表示转换成HEX串存入变量。┃ ┃ │ │ dstFile和PUTF/GETF兼容无*号则为文件名。特殊字符可用变量传入,输入时可以十进制。有*时-可省 ┃ ┃ │ │ 略;源格式可以-BOM,为根据BOM自动判断。 ┃ ┃ │ │ -srcFmt -dstFmt前的 **表示后面内容部分是一个PE变量名。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│CODE -ANSI,src.txt,-UNICODE,dst.txt CODE **-GBK,&V1,**-UNI,&DST ┃ ┃ │ │CODE *,你好,*UNICODE,UNI_HEX_NIHAO CODE *,你好吗,**-GBK,&DST ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'COME' 'NOTE' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│COME/NOTE <0|1|ON|OFF> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃COME│功能│开启/关闭注释 。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃NOTE│参数│■1: 开启(默认)注释; 0: 关闭注释 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│COME 0 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'CMPS' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│CMPS [-f] [-m] [-bin|-src[:控制字]] [-utf8] [-o] [-u] 源文件 [,] 压缩文件 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃CMPS│功能│压缩文件。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■-f 表示保留资源文件的格式标志,可要可不要。-m不加密。-u解压。-o旧式加密 -bin二进制文件 ┃ ┃ │ │■控制字: 1:删除注释行 2:换行符转换 4:压缩空行 8:删除行后注释(危险) ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│CMPS A.wcs A.wcz 或 CMPS -m B.wcs B.wcz 或 CMPS -u B.wcz B2.wcs ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│压缩文件可以直接load运行,或作为内置脚本,图标,位图。大小不限。加密文件可运行不可解压。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'DATE' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│DATE 【*h】【*r】 [*space[0]] [*bsys] [*utc:UTC时间] [*gmt:GMT时间] [*local:LOCAL时间] [*us]┃ ┃ │ │ [*sys:国际时间] [变量名] [子项] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│返回系统当前日期和时间 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │*h高精度 *r同步高精度计时器,在参数表最前面。*space输出空格间隔,带0则0补齐;*bsys 输出国际时┃ ┃ │ │ 间;其它为时间转换而不是取当前时间。*local *sys后加0则为*space0格式输入。*us毫秒带4位小数 ┃ ┃ │参数│■变量名: 用于保存系统当前日期和时间的变量名称。默认为CurDate。 ┃ ┃ │ │■子项: y Mon d w h min s ms ws[1] ds Freq Counter 分别指 年 月 日 星期 时 分 秒 毫秒 周数┃ ┃ │ │ 年内第几天 计数频率 计数器。也可直接用中文年 月 日 星期 时 分 秒 毫秒 周[1] 天。不指定子项┃ ┃ │ │ 则为全部。子项gmt为GMT秒数(1970.1.1计时),uptime为开机毫秒数,utc为UTC时间,以100纳秒为 ┃ ┃ │ │ 单位,从1601.1.1计时。uptimens为开机纳秒数。Counter为高精定时器计数。可以多个子项。 ┃ ┃DATE├──┼──────────────────────────────────────────────┨ ┃ │示例│DATE *us SysDate ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※返回结果以"年-月-日|星期|时:分:秒"的形式保存在指定的变量中,取出"日期"或"时间",用MSTR ┃ ┃ │ │※若省略"变量名"时,结果保存在环境变量%CurDate%中,示例的结果可能是"2008-8-8|5|20:8:8"。 ┃ ┃ │ │※国际时间 LOCAL时间可用一对双/单引号,各子项间一个任意非数字字符间隔。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'DEVI' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│DEVI [*rescan] [*norescan] [*devclass:DevClass] [$][,匹配级别[,解压目录]] ┃ ┃ │ │DEVI [*rescan] [*norescan] [*nocheck] [,DevClass] ┃ ┃ │ │DEVI [*rescan] [*norescan] <含有INF子目录的目录>[,DevClass] ┃ ┃ │ │DEVI [*rescan] [*norescan] <*sub|*self> <含有INF文件的目录>[,DevClass[|OptClass]] ┃ ┃ │ │DEVI $[$],[安装节],[操作码] <===◆标准安装模式, 默认DefaultInstall,132 ┃ ┃ │ │DEVI [*rescan] [*norescan] *extract ,[匹配级别],解压目录 <===纯解压 ┃ ┃ │ │DEVI [*rescan] [*norescan] *nocheck ,[匹配级别],解压目录,INF相对路径 <直接安包内INF┃ ┃ │ │DEVI *rescan[:Fun] <===重新扫描硬件改动 ┃ ┃ │ │DEVI listdev:变量名 [*devclass:DevClass] [*ALL] [*listdev=i|c|+] [*devid:[h|c|+|@:]ID] ┃ ┃ │ │ [*comp[+]] [*hwid] [*inst] [*many] [*rescan] //查询 可'preID1''preID2'... ┃ ┃ │ │DEVI *[*]disverify <===关闭驱动校验 **为强制 DEVI *autodisverify <==驱动判断模式 ┃ ┃ │ │DEVI <*enable|*disable|*remove|*restart>:[h|c|+:]设备实例路径/(hc)ID <===启用/禁用/删..设备┃ ┃ │ │DEVI <*update|*install>:硬件ID:INF <===更新/安装设备 可'硬件ID1:INF1''硬件ID2:INF2'... 上同┃ ┃ │ │DEVI *status:返回名:[h|c|+:]设备实例路径/(hc)ID [*nl] <===查询 可'ID1''ID2'... ┃ ┃ │ │ status:0x400=有问题 0x8000=权限 0x8=运行 PROBLEM:0x16=禁止 ┃ ┃ │ │DEVI buildcache: [-a: 体系] 驱动目录 //生成目录的自动加速缓冲 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│从 CAB 文件或INF文件或指定的文件夹中查找(并安装)驱动程序。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │※*dummy 则不实际安装。用于调试,如查看 DevClass。*devid:设备ID 则安装指定设备驱动。 ┃ ┃ │ │ *nnverify 则不禁止驱动签名校验;*rverify之后恢复禁止驱动签名校验设置。 *7pe[-]则强制使用 ┃ ┃ │ │ Drvload。*inner则强制不使用Drvload。*drvload/*devcon优先用drvload(默认)/devcon。 ┃ ┃ │ │ *retid:变量名 返回本次安装驱动的设备的ID。*auto自动转换是否“处理INF”(CAB默认。注意会改写┃ ┃ │ │ INF) *sys:拷贝到系统目录 *cab强制为CAB文件 *comp+:也匹配兼容ID *ret:返回名:返回报告 ┃ ┃ │ │ *IdCah:PeVar:可续用ID缓冲 *infcache:加速缓冲文件 *optsys[:值]系统工具优先 *num:个数 ┃ ┃ │参数│■指定CAB文件路径。CAB前导"$"表示解压缩驱动文件后安装驱动,否则不安装驱动;可内置 ┃ ┃ │ │■INF前导"$"表示执行拷贝的标准模式;否则只加载设备驱动(可能因找不到设备而不加载); ┃ ┃ │ │■*nocheck:不检查硬件ID强制安装;*norescan:禁止重新扫描硬件改动。 ┃ ┃ │ │■*rescan[:Fun]:重新扫描硬件改动(NT6非强制安装时默认),可单用;Fun:0~7。*rescan:3或2 ┃ ┃ │ │■*showdev:显示设备. ┃ ┃ │ │■匹配级别:设备ID的以&分隔的节数,默认2。 ┃ ┃ │ │■查询:默认为设备ID,*listdev=c则为兼容ID,*listdev=i则为唯一ID。*ALL则包含不存在设备 ┃ ┃ │ │■支持'"串1""串2""串3"' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│DEVI *retid:&&IDS $%SystemRoot%\DRV.CAB 或 DEVI MyInf*.INF 或 DEVI %SystemRoot%\Inf\*.INF ┃ ┃ │ │DEVI %SystemRoot% ┃ ┃ │ │DEVI *extract myCab.CAB,,D:\ABC ┃ ┃ │ │DEVI *dummy *sub D:\ABC //打印D:\ABC下所有INF的DevClass到LOGS。 ┃ ┃ │ │DEVI *sub D:\ABC,Net //D:\ABC下寻找并安装网络驱动。 ┃ ┃ │ │DEVI *devclass:Net $D:\DRV.CAB,,%TEMP% //D:\DRV.CAB中寻找并安装网络驱动。 ┃ ┃ │ │DEVI *devid:PCI\VEN_8086&DEV_1229 $D:\DRV.CAB,,%TEMP% //网卡Intel8255x ┃ ┃ │ │DEVI *disable:PCI\VEN_14E4&DEV_16B5&SUBSYS_05001025&REV_10\4&14C08592&0&00E3 //禁用网卡BCM ┃ ┃ │ │DEVI $$D:\MyDrvs\Drv1.inf //◆标准安装模式, 默认DefaultInstall,132 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃DEVI│备注│※此命令使用自定的(而非系统的)驱动搜索算法,可快速解压缩可能用到的驱动程序,因此,一个设备可┃ ┃ │ │ 能搜索到多个驱动程序。 ┃ ┃ │ │※在CAB中,把每个驱动单独放在一个目录中,并保证CAB中INF文件总是在当前目录的最前面,且CAB中的┃ ┃ │ │ INF文件必须经过处理。建议使用配套程序XCAB来制作。 ┃ ┃ │ │※驱动文件是CAB时,NT5.x系统中,前导'$'和[释放目录]不能同时设置(除非按NT6模式或*sys),但可同┃ ┃ │ │ 时省略。省略前导'$'时只解压文件;省略[释放目录]时,将进行驱动匹配解压,INF文件 ┃ ┃ │ │ 被解压到 "%WinDir%\INF" 目录,SYS文件解压到 "%WinDir%\SYSTEM32\DRIVERS" 目录,其它文件解压┃ ┃ │ │ 到" %WinDir%\SYSTEM32" 目录。 ┃ ┃ │ │※驱动文件是CAB时,NT6.x系统中,(*sys同此)有前导'$',[释放目录]为空或*,则为%TEMP%下的一个临┃ ┃ │ │ 时目录,安装后自动删除。有释放目录'$'可省。将CAB压缩文件按目录结构解压到指定目录中,当有前┃ ┃ │ │ 导'$'时表示解压后安装目标目录的驱动文件。如果不安装,需要指定*extract。 ┃ ┃ │ │※如果其它文件需要解压缩到特定目录中,可以在文件名中使用"#"代替目录分隔符,如文件 ┃ ┃ │ │ "SYSTEM32#WBEM#MOF#XXX.MOF"将会被解压缩到"%SystemRoot%\SYSTEM32\WBEM\MOF\XXX.MOF"。 ┃ ┃ │ │※NT6.x系列WinPE中,用DEVI命令安装"%WinDir%\INF"的INF文件将不进行硬件ID匹配检查(直接安装)。 ┃ ┃ │ │※此命令还有一个功能:从本地磁盘中搜索驱动,如"DEVI \Windows,Display"。但此命令未完善,会提 ┃ ┃ │ │ 示驱动文件对话框。因此,本功能暂不提供技术支持。 ┃ ┃ │ │ *self表示搜索其下*.inf;*sub还要搜索子目录;*self*sub都没则搜索其下INF\*.inf ┃ ┃ │ │※DevClass: Battery CDROM Computer DiskDrive Display FloppyDisk HIDClass Image Infrared ┃ ┃ │ │ Keyboard MEDIA Media Monitor Mouse Net PCMCIA Ports Processor SCSIAdapter System USB ┃ ┃ │ │ Volume fdc hdc ┃ ┃ │ │※%&__DEVI.REBOOT%: 是否需要重启 ID中*字符用^*(或*)替代 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'DFMT' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│DFMT <盘符字母>,<磁盘格式>[,磁盘卷标][,快格磁盘][,单元大小][,压缩] ┃ ┃ │ │DFMT* FORMAT程序参数 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│调用FORMAT.COM 格式化磁盘 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■盘符字母: 指定将被格式化的磁盘卷; ┃ ┃ │ │■磁盘格式: 支持 FAT、FAT32、NTFS、exFAT等,设置时将按参数格式化,省略时不对磁盘作格式化; ┃ ┃ │ │■磁盘卷标: 格式化磁盘时设置的卷标; ┃ ┃DFMT│ │■快格磁盘: 数值,非0表示快速格式化,0表示默认格式化,省略时该参数时表示快速格式化; ┃ ┃ │ │■单元大小: 数值,省略或设置为0表示默认,非0值为512*(2^n),即512、1024、2048、...、65536。 ┃ ┃ │ │■压缩: 数值,省略或设置为0表示不压缩,1表示压缩。只是用于NTFS。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│DFMT E:,FAT32 或 DFMT R:,NTFS,RamDisk,1 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※该命令提供支持格式化硬盘、虚拟硬盘的功能,不支持格式化软盘; ┃ ┃ │ │※单元大小建议采用默认值0或省略设置单元大小; ┃ ┃ │ │※该命令采用静默方式执行,不提供任何显示信息,操作时要格外小心。格式为完整格式。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'DIR' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│DIR [--wd:[*]工作目录] 变量名 参数... ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│得到文件列表,一行一个 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃DIR │参数│※--wd:[*]工作目录表示设置执行命令的工作目录,有空字符前后用引号,“*”则为文件名取其目录; ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│TEAM DIR &INILIST /s /O:N C:\*.INI| MESS. %&INILIST%@#OK ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│后面的参数参见DOS的DIR命令,已暗含/B参数。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'DISK' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│DISK [-check] [-skiptp:tp1;tp2] [-skippt:hd1:lpt1;hd1:lpt2] [-from:盘符[表]] [-cdrom] ┃ ┃ │ │ [变量名],[硬盘号],[分区号],功能号,[U盘符[表]][,选项] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│读取硬盘信息、卸载或分配盘符卷。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■变量名: 字符串,可以是盘符、以'\'开头的Windows系统目录名、字符串变量名或空值四种形式; ┃ ┃ │ │■硬盘号: 数值,以0为基数的硬盘序号,可省略; ┃ ┃ │ │■分区号: 数值,以1为基数的分区序号,可省略; ┃ ┃ │ │■功能号: 数值,省略为默认值0; ┃ ┃ │ │■U盘卷 : 字母或盘符表示,可省略。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│DISK ,,,1,U: 或 DISK ,,,2,U: 或 DISK uDisk,,, 或 DISK \Windows|\WinXP|\WinNT|\Windows7,,,1,U┃ ┃ │ │DISK uAllPart,,1 或 DISK Part,0 或 DISK ,1,3 或 DISK E:,1,4,1 或 DISK Vol,0,2 或 DISK ,,,3,U┃ ┃ │ │DISK -check -from:C-V ,,,1,?:,0x71 //整理已有盘符 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │1 │ DISK ,,,功能号[,U盘符][,选项] ┃ ┃ │备注│※"硬盘号"、"分区号"、"变量名"均为空值时,"功能号"不为空值。选项0x1位表示只整已有盘符的分区 ┃ ┃ │ │ ,0x2位校验分区有效性,0x4跳过0xEE 0xEF的分区。0x10已有盘符隐藏分区也排序。0x20CDROM也排序 ┃ ┃ │ │ 0x40限制盘符表。根据"功能号"以下几种情况分配硬盘盘符: ┃ ┃ │1.1 │ DISK ,,,1或4[,U盘符][,选项] //4默认含有0x4选项 U盘符=?则接着固定硬盘 ┃ ┃DISK│ │ 1、给所有可见分区按固定硬盘序号和分区序号重新分配盘符,见示例1; ┃ ┃ │1.2 │ DISK ,,,2或22[,U盘符][,选项] //22为第一主分区 U盘符=?则接着固定硬盘 ┃ ┃ │ │ 2、先给各固定硬盘的第一(主)分区分配盘符再给各硬盘的其它分区分配盘符,见示例2 ┃ ┃ │1.3 │ DISK ,,,3,U盘卷 ┃ ┃ │ │ 3、不调整固定硬盘(和移动硬盘)的盘符,只调整U盘盘符,见示例10; ┃ ┃ │2 │ DISK 变量名[,,,功能号][,U盘符] ┃ ┃ │ │※"硬盘号"、"分区号"均为空值,"变量名"非空值时,根据"变量名"以下两种形式执行相应的功能 ┃ ┃ │2.1 │ DISK 变量名 ┃ ┃ │ │ 1、"变量名"是字符串变量形式时,将本机的硬盘数赋值给指定的"变量名",见示例3; ┃ ┃ │2.2 │ DISK \系统目录名[,,,功能号][,U盘卷] ┃ ┃ │ │ 2、"变量名"是以'\'开头的系统目录名时,搜索并加载硬盘上的系统注册表,按硬盘盘符机制分配盘 ┃ ┃ │ │ 符,若要搜索多种可能的系统目录名,它们之间可用'|'隔开(见示例4);该 功能执行失败时,再根据 ┃ ┃ │ │ "功能号"的数值执行后续的分配盘符方案,后续的分配盘符方案,见示例1、示例2和示例10; ┃ ┃ │3 │ DISK 变量名,,分区号 ┃ ┃ │ │※"硬盘号"为空值,"分区号"不为空值时,将本机硬盘的加载分区数赋值给指定的"变量名",见示例5; ┃ ┃ │4 │ DISK 变量名,硬盘号 ┃ ┃ │ │※"硬盘号"不为空值,"分区号"为空值时,将指定硬盘的加载分区数赋值给指定的"变量名",见示例6; ┃ ┃ │5 │ DISK [变量名],硬盘号,分区号 ┃ ┃ │ │※"硬盘号"不为空值,"分区号"也不为空值时,根据"变量名"的格式按以下三种情况处理: ┃ ┃ │5.1 │ DISK ,硬盘号,分区号 ┃ ┃ │ │ 1、"变量名"为空值时,则卸载该硬盘分区分配的盘符卷,见示例7; ┃ ┃ │5.2 │ DISK 盘符卷,硬盘号,分区号,[功能号] ┃ ┃ │ │ 2、"变量名"为盘符卷时(如 E: 或 E:\),为硬盘分区分配指定的盘符卷,"功能号"省略或为0时,若为┃ ┃ │ │ 隐藏分区则不分配盘符卷,"功能号"为非0时不管是否为隐藏分区均分配盘符卷,见示例8; ┃ ┃ │5.3 │ DISK 变量名,硬盘号,分区号 ┃ ┃ │ │ 3、"变量名"不为空值,且不符合盘符形式时,将该分区的盘符赋值给指定的"变量名",见示例9; ┃ ┃ │ │※"U盘卷"表示自动整理盘符时给USB Flash Disk(闪存盘)分配的起始盘符,省略表示不整理U盘盘符; ┃ ┃ │ │※整理盘符命令要放在PECMD.INI最前面。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'DISP' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│DISP [-confirm] [-delay] [=显示器号] [@位置矩阵] [S多显方式] [P] [W水平分辨 H垂直分辨] ┃ ┃ │ │ [B颜色深] [F刷新率] [T等待ms] [O方向] ┃ ┃ │ │DISP [=显示器号] 变量名 //查询当前或全部可能配置,多行,行内TAB分隔 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置显示参数。 *delay则只写注册表。多显方式:0x81=1显示 0x82=复制 0x84=扩展 0x88=2显示 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃DISP│参数│■分别指定屏幕参数,如果所有参数都省略则自动设置。显示器号从0开始。P设为主显示器。 ┃ ┃ │ │ 位置矩阵:X0:Y0:X1:Y1:X2:Y2:X3:Y3... 各显示器的起点位置坐标 -sort:排序 -size:只有大小┃ ┃ │ │ -reset -delay -bright[?]:亮度值/变量 -ori:查询方向 -guis:图形 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│DISP =1 S0x84 P W1024 H768 B32 F70 T5 或 DISP ? &CUR DISP ?* =0 &ALL 或 DISP =1 S0x84 P ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│前三组参数可单独使用,如要设置刷新率为75,使用 DISP f75 即可。 %&YesNo%=Yes:设置 NO:恢复 ┃ ┃ │ │ TIMEOUT:超时恢复 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'DTIM' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│DTIM [-right] [*] <名称>,<形状>,[初始值],[事件],[类型] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│建立一个日期/时间器。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │ <名称>参数前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │参数│■名称: 字串,编辑框名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■形状: 编辑框位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■初始值: 字串,初始化编辑框时填入的文字内容。\n或原生换行。输入逗号可用变量实现(事件同)。┃ ┃DTIM│ │■事件: 在编辑框内按下回车键或双击时执行的命令,必须是 WinCMD 支持的有效命令。 ┃ ┃ │ │■类型: 数字(累加),默认为0,正常编辑框,负号为灰色禁用,0x10位不可见。0x20位长日期格式, ┃ ┃ │ │ 0x40位时间格式,0x80位短世纪日期格式,默认短日期格式。0x100位上下键调整。0x200带勾选器。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│ DTIM Dtim1,L32T244W240H24,2008;5;12,Mess,0x200 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※该命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※"ENVI @名称.Enable=[#]数值",0为禁用状态;1为可用状态(不响应)。#用于子线程 ┃ ┃ │ │※可用"ENVI @名称.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※可用"ENVI @名称.VAL=数值1;数值2;数值3"来设置年月日或时分秒。 ┃ ┃ │ │※可用"ENVI @名称.VAL=?名字1;名字2;名字3;名字4;名字5"来返回年月日周标志或时分秒标志。 ┃ ┃ │ │ 标志:0=有效,1=去勾选,-1=失败。 ┃ ┃ │ │※可用"ENVI @控件名称.*del="来删除。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'EDIT' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│EDIT[-|+.*=] [-right] [-center] [-vcenter] [-rich] [-3D] [*] ┃ ┃ │ │ <编辑框名称>,<编辑框形状>,[编辑框内容],[编辑框事件],[编辑框类型],[颜色],[字体] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│建立一个单/多行文本编辑框。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■-表示水平滚动条;|表示垂直滚动条;+表示无边框;.表示不转换\n否则转换;*表示预解释事件(变量┃ ┃ │ │ );=表示编辑框内容是文件名。注意以上参数需紧跟命令“EDIT”后,不要有空字符!也无顺序之分。┃ ┃ │ │ 文本默认左对齐,-right 右对齐,-center 居中,-rich 可设置颜色,-3D 3D轮廓。-u2d unix2dos ┃ ┃ │ │ <编辑框名称>参数前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │ │■编辑框名称: 字串,编辑框名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■编辑框形状: 编辑框位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■编辑框内容: 字串,初始化编辑框时填入的文字内容。\n或原生换行。逗号可用变量(事件同)。 ┃ ┃EDIT│ │■编辑框事件: 在编辑框内按下回车键或双击时执行的命令,必须是 WinCMD 支持的有效命令。 ┃ ┃ │ │■编辑框类型: 数字(累加),默认为0,正常编辑框,“-”负号为灰色禁用,1密码输入框,8只读,4多┃ ┃ │ │ 行,0x10位不可见,0x20位可编辑并支持自动换行,0x40/0x800位跳到末尾/行尾;0x100接受一个拖入┃ ┃ │ │ 文件名;0x200接受所有拖入文件名,多行;0x400数字。为兼容:单独的2=禁用 3=只读 ┃ ┃ │ │■颜色: 数字,由文字颜色和背景颜色组成,格式为"数值1#数值2",省略时为默认颜色。 ┃ ┃ │ │■字体: 格式为“字体大小[:字体名]”。 ┃ ┃ │ │ 字体名可以附带其他修饰[**BbUuIiSs#Weight#Width#CharSet#Quality#Orientation#Escapement# ┃ ┃ │ │ OutPrecision#ClipPrecision#PitchAndFamily]。适用其它字体设置。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│EDIT Edit1,L32T244W240H24,C:\Windows,ENVI @Label1=%Edit1%,0x224 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※该命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※要设置编辑框的文字内容,可使用 "ENVI @编辑框名称=文本内容" 来设置,参照 ENVI 命令的说明。 ┃ ┃ │ │※"ENVI @编辑框名称.Enable=[#]数值",0为禁用状态;1为可用状态(不响应)。#用于子线程 ┃ ┃ │ │※可用"ENVI @编辑框名称.ReadOnly=数值"来设置编辑框的只读状态;0为非只读状态,非0为只读状态。┃ ┃ │ │※可用"ENVI @编辑框名称.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※可用"ENVI @编辑框名称.LINE=数值"来使某行可见。不可查询。行号从1开始。0和1直接跳回1行号, ┃ ┃ │ │ “-1”直接到末尾。而以:引导为相对位置,负数为上滚行数。 ┃ ┃ │ │※可用"ENVI @编辑框名称.Val=?变量名"来获得实时内容。 ┃ ┃ │ │※可用"ENVI @编辑框名称.Color=[:字号[:字体名:]BITUL;][颜色[#背景色]][;起始位置[;终止位置]]" ┃ ┃ │ │ 设置颜色字体。位置按内容计算,从0开始。省略位置为当前选择的范围。-1为最末尾。 终止位置默认┃ ┃ │ │ 为-1。汉字和换行占一个位置。B:粗体 I:斜体 U:下划线 L:连接 T:删除线 ┃ ┃ │ │ 位置可以为“行号:[列号]”,行号列号从1开始。 ┃ ┃ │ │※可用"ENVI @控件名称.*del="来删除。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'EJEC' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│EJEC [C-|U-|X:|磁盘号],[操作标识] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│弹出或关闭指定的CDROM驱动器托盘;移除指定的USB驱动器。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■参数"C-" 将操作所有可能的CDROM光驱的托盘; ┃ ┃ │ │■参数"U-" 将移除所有可能的USB磁盘; ┃ ┃EJEC│ │■参数"X:" 将操作指定盘符的CDROM光驱或USB磁盘; ┃ ┃ │ │■操作标识 指定弹出或关闭CDROM驱动器托盘,省略默认0,为弹出,1为关闭,R为移除USB光驱。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│EJEC C- 或 EJEC U- 或 EJEC H: 或 EJEC H:,1 或 EJEC C-,1 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※本命令为系统托盘没有U盘管理图标的精简PE使用;对于有U盘管理图标的PE,建议使用系统托盘图标。┃ ┃ │ │※本命令不要在配置文件中使用;INIT命令带"I"参数会将本命令的功能安装到托盘图标的菜单中。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'ENVI' 'SET' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│ENVI[.$#%~~.*=<>-x1-[Lfr:Lto[:Rfr:step]]] [&[&]|^][$][#][-][*][ ][[~析构函数~]名称][=值] ┃ ┃ │ │ENVI[.$#%~~.*=<>] &::[名称][=值] //全局PE变量 ┃ ┃ │ │ENVI-copy PE变量名=源PE变量名[;源偏移;长度;目的偏移] //2进制拷贝对象,扩展为部分拷贝 ┃ ┃ │ │ENVI-cmp PE变量名=源PE变量名;源偏移;[长度];目的偏移;[S|s|I|i] //比较 S/s/I/i字符串比较 ┃ ┃ │ │ ,S/I宽字符,s/i窄字符,I/i不分大小写, S/s/I/i且没有长度字段则无长度串比较 ┃ ┃ │ │ENVI-tom PE变量名=源PE变量名 //UNICODE转多字节串(如GBK) ┃ ┃ │ │ENVI-tow PE变量名=源PE变量名 //多字节串(如GBK)转UNICODE ┃ ┃ │ │ENVI-addr [地址名][;长度名]=源PE变量名 //返回内存地址,字节长度 ┃ ┃ │ │ENVI-swap PE变量名=PE变量名2 //对象内容交换 ┃ ┃ │ │ENVI-make PE变量名=[地址|&PE变量名[@[$]偏移]][;[*][[$]字节数]] //创建PE变量。*为char串 ┃ ┃ │ │ENVI-mkdummy PE变量名=[地址][;[*][[$]字节数]] //同-make,但只利用原内存创建dummy对象 ┃ ┃ │ │ 地址 可为 PE变量名[@[$]偏移] 或 (shm)共享内存名[@[$]偏移] 字节数为~由对象确定 $:加宽 ┃ ┃ │ │ENVI-mkfixdummy PE变量名=[地址][;[*][字节数]] //同-mkdummy,但内存将不变动 ┃ ┃ │ │ENVI-zero PE变量名=[[$]数值][@[$]偏移]][;[$]数量] //清除变量的内存,默认0 $:加宽,可多次┃ ┃ │ │//后缀-env //临时取消forcelocal便于操作环境变量,必须是第一个后缀 ┃ ┃ │ │//后缀-std //临时EnviMode=1便于操作环境变量,必须是第一个后缀 ┃ ┃ │ │//后缀-ret[回溯级别] //回溯指定级别(默认1)再操作PE变量名,如函数返回 ┃ ┃ │ │//后缀-get[回溯级别] //回溯指定级别(默认1)再获取PE变量,如函数传入PE变量名 ┃ ┃ │ │//后缀-raw //等号后的部分不解释 ┃ ┃ │ │ENVI-数据类型 PE变量名=数值[:[~]偏移字节数] //在PE对象中制作指定类型的2进制数据。 ┃ ┃ │ │ENVI?数据类型[0[@]] 源PE变量名=变量名[:[~]偏移字节数]//取PE对象中指定类型2进制数据。0:补┃ ┃ │ │ 0,@去0x,s带符号,数据类型:char wchar short int long longlong int64 float double ldouble ┃ ┃ │ │ ptr(指针) ~:类型单位 BOOLEAN=bool=1 BOOL=enum=4 ┃ ┃ │ │ENVI^ 专用于控制命令.^为第一个后缀 ┃ ┃ │ │SET-def ABC //确保本级有ABC变量,无则加一个空变量,有则什么也不做。ENVI &&ABC等也可。 ┃ ┃ │ │ENVI-ex 返回名=[&[&]]待查变量名 //检查是否存在该变量 &为PE变量,&&本级PE变量,否则环境变量 ┃ ┃ │ │变量名第一个前缀^表示环境变量(ENVI ^ABC=1),同样%^变量名%也为环境变量;不受FORCELOCAL控制。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置或清除环境变量。SET是PE变量版。 ┃ ┃ │ │SET等价于ENVI & 。SET-def和SET & 等价于ENVI && 。其它和ENVI相同。 -[f1:t1[:f2]]为向量操作 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■指定环境变量名称和值。 ┃ ┃ │ │ "."表示\n转换为换行,如果是控件为禁止换行。"$"表示值按16进制转换为对应字符,8个一组或空格 ┃ ┃ │ │ 分隔;"%"默认按10进制转换,空格分隔;均为UNICODE。"~"表示变量再解释一次;"~~"再2次。"*"多 ┃ ┃ │ │ 轮次"$""%"时,[*重复因子]数据。=按空格分隔的词重复,[*重复因子] 词.#配合$%转换为对应字节/内┃ ┃ │ │ 存模式。<>针对PE变量,<为在后面追加,>为在前面插入。-x1 -x2 -x3 表示再解释1~N次 ┃ ┃ │ │ 前导"$"表示设置系统级环境变量,"#"表示设置用户级环境变量,可同时用;均广播所有程序,5秒等待 ┃ ┃ │ │ 超时,且系统忙。*-配合$#, -为THREAD后台广播;*只设置系统,不广播,以后可以ENVI来一次广播。 ┃ ┃ │ │ 前导"&"表示设置函数或窗口PE变量。 ┃ ┃ │ │ 前导"&&"表示定义功能,即添加或设置本级变量,本级没有就添加,有则仅设置本PECMD程序内部使用 ┃ ┃ │ │ 的环境变量。"&&"同时可屏蔽/保护上级变量。 ┃ ┃ │ │ 环境变量如果没有等号=,则删除变量。 如"ENVI ABC" ┃ ┃ │ │ PE变量如果没有等号=,则仅清除变量内容。 如"ENVI &ABC" ┃ ┃ │ │ 如果不指定值,则环境变量设为空值。 如"ENVI ABC=" "ENVI &ABC=" ┃ ┃ │ │ "ENVI *"(省略名称和值)表示将光驱的盘符以CDROM0、CDROM、CDROM1、CDROM2 等写入系统环境变量。┃ ┃ │ │ "ENVI $" 设置以下系统环境变量后广播变更通知: ┃ ┃ │ │ Favorites 收藏夹目录 ┃ ┃ │ │ Desktop 桌面目录 ┃ ┃ENVI│ │ StartMenu 开始菜单目录 ┃ ┃SET │ │ Startup 启动菜单目录 ┃ ┃ │ │ Programs 程序菜单目录 ┃ ┃ │ │ SendTo 发送到目录 ┃ ┃ │ │ Personal 我的文档目录 ┃ ┃ │ │ QuickLaunch 快速启动目录 ┃ ┃ │ │■"ENVI " 注册表中环境变量变更通知所有程序(5秒超时,避免假死可用多线程或多进程)。 ┃ ┃ │ │■析构函数 仅第一次定义该PE变量时有效。在退出变量定义范围时调用“析构函数 变量引用 变量值"┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│ENVI TEMP=%SystemDrive%\TEMP 或 ENVI &&ABC=123 或 删除ABC:ENVI &ABC 或 ENVI$ NL=0d 0a ┃ ┃ │ │或 ENVI$ DATA=*1M 30 0d 0a 或 ENVI= DATA=*1K 0x00 或 ENVI$# &DATA=*1K 30 ┃ ┃ │ │或 SET-def ~ClosehandleX~h=0。销毁时调用 ClosehandleX &h %&h% 或 SET~-x1-[1:2] B%%d=A%%d ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※使用"EXEC"执行的程序,会自动继承本程序的环境变量,换句话说,如果在配置文件中设置不带"$"的 ┃ ┃ │ │ "ENVI"环境变量,对后面的"EXEC"程序也会有效。窗口名和控件名也可以带&。 ┃ ┃ │ │※ENVI^ EXPORTLOCAL=1 可以允许自动继承本程序的PE变量。 ┃ ┃ │ │※ENVI^ EXPORTLOCAL=0 重新禁止自动继承本程序的PE变量。(默认) ┃ ┃ │ │※ENVI^ EXPORTLOCAL=&1 可以允许自动继承本程序的PE变量。只对本级及以后级别有效,线程中用到 ┃ ┃ │ │※ENVI^ EXPORTLOCAL=&0 重新禁止自动继承本程序的PE变量。(默认)只对本级及以后有效,线程用。 ┃ ┃ │ │※ENVI^ FORCELOCAL=1 强制所有变量为PE变量。能最简单变多线程或多任务(并行窗口)。 ┃ ┃ │ │※ENVI^ FORCELOCAL=0 取消上面的强制。(默认) ┃ ┃ │ │※ENVI^ EnviMode=0 兼容4.0模式,默认。空变量不解释。并自动多轮次非顺序解释。(默认) ┃ ┃ │ │※ENVI^ EnviMode=1 标准模式。空变量解释为空。顺序解释1遍。但仅对=前的变量名多轮次 (建议) ┃ ┃ │ │※当参数为空或仅有参数"$"时可以起到刷新环境变量的作用。允许空字符。注意多余的的空字符。 ┃ ┃ │ │※标准模式下没定义的变量为空,而不是不翻译(实为一种不确定状态)。 ┃ ┃ │ │※注意:支持前后的空字符。 如 TEAM ENVI ABC= 123 |... 则ABC为" 123 "而不是"123". ┃ ┃ │ │※"~"表示变量再解释一次,即解释后的数据作为变量名,返回其值。"~."解释后的数据作为函数参数, ┃ ┃ │ │ 返回其值。"~*"表示符合函数参数格式按"~.",否则按"~"解释。"~~"则如此两次。 ┃ ┃ │ │ "~"、"~~"、"~."、"~*",可反复调用。 ┃ ┃ │ │※允许空字符。小心末尾的空字符将被丢弃。如:ENVI A=123 | ENVI B=123 ┃ ┃ │ │ //A=123后面的空格有效,B=123后面的空格全部丢弃。 ┃ ┃ │ ├──────────────────PE变量────────────────────────┨ ┃ │ │※PE变量由SET-def A=或SET &A=或ENVI &&A=创建并赋值(有则只赋值);创建在本级;退出其范围时┃ ┃ │ │ 自动销毁。 PE变量只是清空和修改,不能删除;以保证变量稳定的共享关系。 ┃ ┃ │ │※PE变量有遮盖效应,子级变量遮盖同名上级变量。多线程中必须用PE变量,以保证互不干涉。 ┃ ┃ │ │※PE变量的读取为%&变量名%,子级优先。函数返回,该级PE变量自动释放。PE变量可直接用SET。┃ ┃ │ │※全局PE变量:所有函数、线程都可访问操作,不会自动销毁。程序运行中始终有效。 ┃ ┃ │ │※线程创建后自动将共享点之后的PE变量复制到子线程。 ┃ ┃ │ │※窗口和有持久栈的函数(*函数)的变量是共享的;后面函数或块的是非共享的,子线程自动复制一份 ┃ ┃ │ │※如果使用"EXEC"执行的程序,不会自动继承本程序的PE变量。窗口名和控件名也可以带&。 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※值传递和引用传递。值传递:传递的是值,单向传递,调用者到被调用者,如 %ABC%,有一对%。 ┃ ┃ │ │※引用传递:传递的是变量名,调用者和被调用者双向传递,可以回传数值,如 ABC,无一对%。 ┃ ┃ │ │★必须注意,引用传递支持2进制,包括2进制0,2进制0无法用值传递。 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※刷新桌面:ENVI @@DeskTopFresh=[clearicon][;][1/2/4/8/16][;[-/+]路径] //1:刷新桌面和我的电 ┃ ┃ │ │ 脑窗口 //2:专业刷新桌面,只刷新桌面 4:改变后刷新 8:刷新图标和文件关联 ┃ ┃ │ │ 16[:方法]:刷新目录(默认桌面)-为删除+为增加默认刷新 clearicon: (先)清除图标缓存 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※开启托盘菜单: ENVI @@TaskIcoMenu=1 ┃ ┃ │ │※关闭托盘菜单: ENVI @@TaskIcoMenu=0 ┃ ┃ │ │※托盘菜单开启/关闭切换: ENVI @@TaskIcoMenu=2 ┃ ┃ │ │※一般在系统级热键中用,操作的是系统级托盘。应用程序中使用则是程序级,程序退出自动消除。 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※HELP默认颜色: ENVI^ HelpColor=[*命令行高] [前景色][#背景色] //全局 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※词语分断 ENVI^ Arg=*[分断字符集]被分断字符串 ┃ ┃ │ │ =后有*则被分断字符串中间的分段符串也作为一个哑元,否则丢弃。覆盖本函数或LAMDA参数表,引用 ┃ ┃ │ │ 同函数参数。分断字符集:为空则为:sp:;特别地:sp:表示空字符;]用\];\用\\;支持变量。 ┃ ┃ │ │ 分断字符集外面的[]不可省。=后有*则,奇数哑元才是词语,偶数哑元是分断字符集组成(可能为空) ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※剪切板: ENVI^ Clipboard=字符串 //支持变量 ┃ ┃ │ │※剪切板: ENVI^ Clipboard?=变量名 //查询 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※查询文件版本: ENVI ?文件版本变量名[,产品版本变量名]=FVER,文件名 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※获得拖入文件名: ENVI ?[单个名],[全部名]=DROPFILE,wParam ┃ ┃ │ │ 对应的消息为WM_DROPFILES, wParam为消息参数1。单个名返回第一个。全部名返回全部,多行 ┃ ┃ │ │ 示例: ENVI @LABE1.MSG=0x0233::wp,lp, CALL OnDrop1 %wp% %lp% ┃ ┃ │ │ _SUB OnDrop1 ┃ ┃ │ │ TEAM ENVI ?&&F1,&&FS=DROPFILE,%1| ENVI @LABE1=%&FS% ┃ ┃ │ │ _END ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※移动鼠标位置: ENVI @@Cur=X;Y //“;”或为“,”。下面均同 ┃ ┃ │ │※查询鼠标位置: ENVI @@Cur=?[@HWND;][[名]X][;[名]Y][;POINT结构名][;按键名][;RC名][;bIn名] ┃ ┃ │ │※查询鼠标位置: ENVI @窗口名.Cur=?[变量名X][;变量名Y][;变量名客户坐标X][;变量名客户坐标Y] ┃ ┃ │ │※移动鼠标位置: ENVI @窗口名.Cur=X;Y ┃ ┃ │ │※显示隐藏鼠标: ENVI @@Cur=*数字 //0为隐藏鼠标,1为显示;要配对。 ┃ ┃ │ │※查询窗口ID控件ID:ENVI @窗口或控件名.ID=?[WID名][;控件ID名] ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※查询文件位置:ENVI ?[起名][,长名][,簇大小名][,磁盘块表名][,块数名][,分区起始名] ┃ ┃ │ │ [,DEV返回名]=FPOS,文件名 ┃ ┃ │ │ 磁盘块表:表示在分区上的分布,每块一行,每行依次为起始和长度。起始-1 为特殊压缩或洞 ┃ ┃ │ │ //最多65535块 65536则可能未完,字节单位,块数前-表示相对0簇地址。起始-38:驻留文件 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※查询某点出的窗口:ENVI ?[名][,顶名]=PWIN,[x],[y][,标志] ┃ ┃ │ │ 标志:1=去掉隐藏的 2=去掉禁用的 4=去掉透明的 0:全部 默认=3 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※捕鼠器A: ENVI @窗口或控件名.MouseCapture=1/0 // 1为开启 0为释放 ┃ ┃ │ │※捕鼠器B: ENVI @窗口名.MouseCapture=#1/#0 // #1为开启 #0为释放 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※ENVI @@EATEKEYS=组合键1 组合键2 ... //拦截按键 组合键格式同HOTK,但不可含空字符 ┃ ┃ │ │ 如 ENVI @@EATEKEYS=VK_LWIN VK_RWIN ALT+VK_TAB Alt+VK_ESCAPE Ctrl+VK_ESCAPE ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※ENVI @@RMENU=变量名;文件名 //获得文件的右键菜单,多行。空行一般为分隔符 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※命令别名:ENVI^ Alias [*opt] 命令别名=[命令前半部] //命令前半部替代的命令别名,*opt优化 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※开关ENVI $#广播:ENVI^ EnviBroad=0/1/- // 1为开启(默认) 0为关闭 -为后台 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※开关&&__arg参数表(兼容精简版):ENVI^ __arg=0/1 // 1为开启 0为关闭(默认) ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※PECMD内存变量: ENVI^ memvar=[?返回名,][:字节数:]偏移地址,值 //修改/查询PECMD内存变量 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※PECMD内存变量: ENVI^ LoadEnvi [[HKCU\]子路径|-] [变量名]//从注册表刷新[环境变量],慎用!! ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※查询父进程号: ENVI ?返回名=PPID,进程号 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※查询本进程是否为管理员: ENVI ?返回名=ISADMIN ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※背景进度: ENVI @窗口或控件名.percent=[百分比][RLCVEF][:背景色][:进度色][:文本色][:文本] ┃ ┃ │ │※ ENVI @@percent=窗口号:[百分比][RLCVEF][:背景色][:进度色][:文本色][:文本] ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※私秘模式(内存用完清0):ENVI^ zero=0/1 //0为关闭(默认) 1为开启 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※禁止X64重定向: ENVI^ DisX64=1,OldCfg ┃ ┃ │ │ 恢复:ENVI^ DisX64=%OldCfg% //一定要配对,变量名前后一致,中间不要修改它 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※查询windows版本号: ENVI ?返回名=WinVer[+][;[^][+]*|文件] //或按文件(可*)获得产品版本, ┃ ┃ │ │ *:系统核心文件,^为文件版本, +则用文件版本地位修正WInVer ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※查询是否PE中: ENVI ?返回名=ispe ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※查询程序/系统位数:ENVI ?字符串名,数字名=PEBIT,[程序或System32目录] //返回x86/x64/ia64 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※查询固件变量:ENVI ?[$.]返名[,属性名]=FVAR,变量名[;名字空间GUID] // 非pe变量或$或非. 返HEX┃ ┃ │ │※操作固件变量:ENVI ?[-v][属性]=FVAR+[$#%],变量名[;名字空间GUID],值 //空值删除 -v:name ┃ ┃ │ │ ENVI ?$&v=FVAR,BootOrder //#字节模式 $16进制 %10进制 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'EXEC' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│EXEC[|][*[1|N|-]] [-catch] [-cmd:[:ms:]CMD][-clone:变量名] [-[h]pid:变量名] [-no64] ┃ ┃ │ │ [-user:[密]用户名 [-passwd:[BASE]密码|-passwd*BASE密码] [-limit] [-wd:[*]工作目录] ┃ ┃ │ │ [-REALTIME] [-HIGH] [-ABOVENORMAL] [-NORMAL] [-BELOWNORMAL] [-LOW] [-IDLE] [-mem] ┃ ┃ │ │ [-min] [-max] [-show] [-wait] [-hide] [-doc:[mode]] [-hook] [-runs] [-job] [-u2d] ┃ ┃ │ │ [-raw] [-logs:[?][*]LOGS文件] [-nowin] [-shel:"自动命令"] ┃ ┃ │ │ [-exe:execfilename] [-err] [-err+] [--] NAME[+]=[=][!][*][@][$][&][参数] ┃ ┃ │ │EXEC -poprmenu[:x.y] 文件名 //弹出改文件的右键菜单 ┃ ┃ │ │EXEC -runrmenu:菜单项名 文件名 //执行该文件的指定右键菜单条目 ┃ ┃ │ │EXEC /InstallService name 【--gui-】 [--delayservice ms] [--wait] [--nowait] [--nojob] [--1]┃ ┃ │ │ [--hide] [--killwin 标题] [--killwin2] [--idle ms [--idlewait]] [--usr] cmd_and_params ┃ ┃ │ │EXEC /RemoveService name ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│执行 EXE 、BAT、CMD 程序。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■指定程序路径和参数。前导参数如下(可同时使用,不分先后顺序): ┃ ┃ │ │※-cmd:[:[*]ms:]CMD 为超/定(*)时执行命令。默认1000ms,不混淆时后面“:”可省,须为第一开关 ┃ ┃ │ │※-limit 表示安全方式执行,此时没有管理员权限;--job为作业方式,配合=确保子孙进程也一同死掉 ┃ ┃ │ │ /REALTIME 实时优先级,/HIGH 为HIGH优先级,/ABOVENORMAL 为ABOVENORMAL优先级, ┃ ┃ │ │ /NORMAL 为NORMAL优先级,/BELOWNORMAL 为BELOWNORMAL优先级,/IDLE /LOW 为最低优先级; ┃ ┃ │ │※-- 表示“-开关”的结束,只在避免开关与命令混淆时才必须; ┃ ┃ │ │※-wait或前导"="表示等待执行完成;-ex1最近一级的PE变量继承为环境变量。-waiti等待界面初始化 ┃ ┃ │ │※-exe:execfilename表示执行文件的名字,可以执行非标准后缀的执行文件,如myinstall.tmp,此时后┃ ┃ │ │ 面的只是作为命令行的一部分而已,可以任意写,甚至不存在或张冠李戴; ┃ ┃ │ │※-wd:[*]工作目录表示设置执行程序的工作目录,有空字符前后用引号,“*”则为文件名取其目录; ┃ ┃ │ │ -wd:** 指本执行文件自身的目录。 -wd:* 指被执行文件的目录。 -u2d unix2dos ┃ ┃ │ │※-code: 指定源编码 ┃ ┃ │ │※-pid:varname表示将pid存入变量varname,可以用KILL准确杀掉; -hpid则为其句柄 ┃ ┃ │ │※-hide 或前导"!"或"*"表示以隐藏方式执行; ※-show 表示显示执行; ┃ ┃ │ │※-min或前导"^"或前导"_"表示最小方式执行; ┃ ┃ │ │※-max或前导"&"表示最大方式执行; ┃ ┃ │ │※-doc[:mode]表示文档模式;以ShellExecute函数执行,可以打开非可执行文件(如*.TXT、.BMP 等); ┃ ┃ │ │ mode可以省略,可以open、edit、explore、find、print、properties、runas,也可以打开可执行文 ┃ ┃ │ │ 件,runas 用于需要超级权限的安装程序等; ┃ ┃ │ │※-user: -passwd: -passwd* 用来以指定账户运行程序; ┃ ┃ │ │※-err表示捕获标准错误输出,-err+捕获标准输出和标准错误输出; ┃ ┃ │ │※-mem在内存执行的幽灵进程; ※-raw 捕捉的是原始2进制数据。 EXEC* -raw ┃ ┃ │ │※-nowin 没有窗口(CREATE_NO_WINDOW)。 ※-nfb 禁止等待光标。 ┃ ┃ │ │※前导"$"表示文档模式; ※-io 接管子进程的输入输出 ┃ ┃ │ │※前导"@"表示在后台桌面(WinLogon)执行,彻底隐藏,无法与用户交互,可用于注册,如: ┃ ┃EXEC│ │ "EXEC @PECMD.EXE CALL $SHELL32.DLL,DllInstall,#1,U"; ┃ ┃ │ │※-hook修改进程中的关机代码(挂接"ExitWindowsEx"函数),建议执行"EXEC --hook =EXPLORER.EXE, ┃ ┃ │ │ "修改SHELL的关机函数,这样执行"开始->关闭系统"的时候就会运行"PECMD.EXE SHUT"命令来关机; ┃ ┃ │ │※-runs表示写入到注册表自动运行(建议用RUNS命令),由Shell登录后运行。如果使用前导"=",将在 ┃ ┃ │ │ "HKLM\Software\Microsoft\Windows\CurrentVersion\Run"的键下,否则在 ┃ ┃ │ │ "HKCR\Software\Microsoft\Windows\CurrentVersion\Run"的键下; ┃ ┃ │ │※EXEC后缀 | 表示管道模式,此时支持2进制命令管道,> >> < 2> >& 重定向符号 ┃ ┃ │ │※EXEC*[1|N|-] NAME= 表示将程序的标准输出存入指定变量NAME中,强制为等待方式。1为只取第一行;┃ ┃ │ │ N为直接去掉换行,合为一行。-为去掉最后的换行,否则保持原样。太多的数据必须用PE变量保 ┃ ┃ │ │ 存(如&ABC)。NAME可以是 @控件名,这样实时显示在控件上,NAME+=为追加模式; ┃ ┃ │ │ -catch:亦如此,将程序的标准输出存入指定变量NAME中。 ┃ ┃ │ │ ▲注意EXEC*1 ... 收到一行信息后马上终止正在执行的命令。 ┃ ┃ │ │※-clone:变量名: 克隆一个PECMD来运行变量名中的脚本。--exe:可以指定另一个PECMD.EXE。 ┃ ┃ │ │ 配合--logs:[?][*]LOGS文件; 有?则当前开启LOGS是才有效 ┃ ┃ │ │※-no64:对pecmd32, 不解除对X64文件系统的限制。-incmd 克隆执行内部命令 ┃ ┃ │ │※-shel:"自动命令" 按照SHEL命令方式执行。 ┃ ┃ │ │※-timeout:[#*]毫秒数[:错误码] 等待超时 #则不杀进程;*也杀子进程 ┃ ┃ │ │※-su[a|e|c|d]:有System权限 a:激活窗口 e:继承环境变量 c:跳过UAC d:CWD -uac: =-suc ┃ ┃ │ │※-svrsys[?]:服务到桌面 -svrusr[?]:以用户ID服务到桌面 ?:服务脚本中才有效 -svr-:禁止切换桌面 ┃ ┃ │ │※/InstallService 为安装服务,服务名字为 name;/RemoveService 为卸载服务,只能用于命令行,脚┃ ┃ │ │ 本中可以 EXEC =%MyName% /InstallService ... ; ┃ ┃ │ │ --killwin 针对 MESS-svr的窗口;--killwin2 针对MESS-svr2的窗口; ┃ ┃ │ │ --wait 等待进程结束(默认),--nowait 不等待,--idle ms空闲ms毫秒后执行命令; ┃ ┃ │ │ --nojob不杀子进程; --gui-无界面交互 --desk[-]:[不]切换显示 ┃ ┃ │ │ --idlewait 有输入时不终止已运行程序,否则有输入即终止已运行程序;--usr:桌面用户ID运行 ┃ ┃ │ │ 执行体 HERE_IS_SERVICE0:后可内置服务参数,100 字符。 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │※执行内嵌程序。可以--exe:[*[*]][?.临时文件后缀:][cab:]传递[:CAB子文件] 或 命令首词传递。无*┃ ┃ │ │ 为直接在内存执行;有*为放入自动删除的临时文件执行。数字为资源EXEDATA下的号码,可以CMPS压缩┃ ┃ │ │ 。很多程序必须用后者,即放入自动删除的临时文件执行。&PE变量名 ud:UD文件名:UD内部文件名 ┃ ┃ │ │ ex:自解压包 **则更安全的删除 ?\代替目录 ??代替文件名 ┃ ┃ │ │ 资源可以写为:"[文件名]""#资源名[|目录名]" 后面1对""可省。此时资源名可为非数字 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│EXEC =!CMD.EXE /C "DEL /Q /F %TEMP%" ┃ ┃ │ │EXEC*1 &&LABEL=!CMD.EXE /C dir C:\...... ┃ ┃ │ │EXEC*N &&VER=!CMD.EXE /C VER ┃ ┃ │ │EXEC* &&DIRT=!CMD.EXE /C DIR /S T:\xxxxx 2>&1 ┃ ┃ │ │EXEC* @Edit1=!ping 127.0.0.1 ┃ ┃ │ │EXEC| =!ipconfig > ip.txt ┃ ┃ │ │EXEC| =*ipconfig | =%Myname% TEAM READ --,**,V|| MESS. [%%V%%] //先ENVI^ EnviMode=1 ┃ ┃ │ │EXEC| !cmd /c dir | !=gzip.exe -9 > dirs.gz ┃ ┃ │ │EXEC|* &&V=!gzip.exe -d < dirs.gz ┃ ┃ │ │PECMD.EXE EXEC /InstallService IdlePoweroff --nowait --delayservice 20000 --hide ┃ ┃ │ │ --idle 1200000 shutdown -f -s -t 30 ┃ ┃ │ │EXEC* --exe:#100 &&V=cmd /c dir //调用内嵌的cmd.exe,直接在内存执行 ┃ ┃ │ │EXEC --clone:&MyStript 参数A B C ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│SHELL 也是通过此命令来载入的; ┃ ┃ │ │等待模式%&&ERRORLEVEL%为程序退出码;%ERROR% %&&ERROR%也是此值。 ┃ ┃ │ │可以如批处理文件一样,不用EXEC, 直接运行,此时为等待模式。如 NOTEPAD; ┃ ┃ │ │没有命令词时后缀为WC?、IN?、TX?,且文件存在,按LOAD;否则按EXEC; ┃ ┃ │ │开关前导有冲突时,最后的有效。前导和文件名间可以加空格分断; ┃ ┃ │ │文档模式,如果要带参数,文件名必须用"括起来,否则全部当一个文件名。 ┃ ┃ │ │程序路径和参数中的文件路径如果实际有空格,也要用引号 ┃ ┃ │ │命令行或批处理脚本程序用! * --hide就可以了,一般不要用@。@不是所有版本windows都支持。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│示例2“EXEC* DIRT=!CMD.EXE /C DIR /S T:\xxxxx 2>&1 ”的详细说明: ┃ ┃ │ │1:“2>&1”是CMD.EXE的特别符号,表示命令的标准错误输出(2) 合并到标准输出(1) 中,EXEC 默认接受┃ ┃ │ │标准输出,这样接受到的是全部内容。 ┃ ┃ │ │命令:C:\>dir XYAXXX ┃ ┃ │ │驱动器 C 中的卷是 WINDOWSXP ┃ ┃ │ │卷的序列号是 28F0-182C ┃ ┃ │ │C:\ 的目录 ┃ ┃ │ │找不到文件 //其中『找不到文件』 是标准错误输出(没有2>&1,将没有这一行),而其它为标准输出。 ┃ ┃ │ │EXEC* --err 则接受标准错误输出 ┃ ┃ │ │2:1为只取第一行 ┃ ┃ │ │主要是有些命令输出太多,其实只需要第一行,可马上终止并返回结果。 ┃ ┃ │ │3: 接受其它行。先全部接受到变量 &V,再从 &V 取指定行。 ┃ ┃ │ │1> FORX *NL &V,&line, .... ┃ ┃ │ │FORX 自动拆成一行一行的,每轮循环, &line 表示一行。 //【HELP FORX】 ┃ ┃ │ │2> 用READ //【HELP READ】 ┃ ┃ │ │READ -,-1,&LINES,%&V% //读取行数 ┃ ┃ │ │READ -,0,&line,%&V% //读取最后一行 ┃ ┃ │ │READ -,1,&line,%&V% //读取第一行 ┃ ┃ │ │READ -,2,&line,%&V% //读取第二行 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'EXIT' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│EXIT [脚本类型] ┃ ┃ │ │EXIT= [错误码或PE变量名或error] //设定错误码,默认0,PE变量名则取其地址,error返回错误码 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│退出当前的CALL命调用的子过程,或退出LOAD命令调用的配置文件过程,或退出LOOP调用的循环命令。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃EXIT│参数│■脚本类型: 用 [数值或命令] 表示。 没有则自动判断(_SUB、FILE、FORX、LOOP、BLOCK) ┃ ┃ │ │ ◆命令: 不分大小写,可用 FILE、WIN、_SUB、FORX或BREAK、LOOP或BREAK、-或BLOCK、CONTINUE,分┃ ┃ │ │ 别指当前文件、当前窗口、 当前函数、 当前FORX循环 、当前LOOP循环、跳到当前BLOCK尾部(}之 ┃ ┃ │ │ 前)、跳到LOOP/FORX下一轮. EXIT ToWin 则中止函数执行,立即返回窗口控制。 【建议使用】 ┃ ┃ │ │ ◆数值: 可取"1~4",分别指当前过程、当前文件、当前FORX循环 、当前LOOP循环 【建议不用】 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│IFEX $%Val%=10,EXIT Loop 或 FIND $%Cancel%=YES,EXIT File!EXIT _Sub 或 EXIT 1 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※示例1表示Val为10时退出当前循环;错误码是线程独立的。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'FBWF' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│FBWF [P可用内存百分数] [L最小值] [H最大值] [F剩余值] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置FBWF缓存 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃FBWF│参数│■最大值、最小值、剩余值均为MB。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│FBWF P20 L32 H64 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│三个参数都可单独使用,如使用 FBWF L64 时,将不理会可用内存的大小,强制设置 64M 的 FBWF。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'FDIR' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│FDIR [--short[+]|--long[+]] [--full|--fullfile] [--volume[part]] [--part] 变量名=文件名 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│返回指定"文件名"所在的目录名(最后无"\") ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■变量名 用于保存目录名的变量名称;--full绝对目录,\结尾则为本身。--fullfile 文件全路径 ┃ ┃FDIR│ │■文件名 合法的文件名称。 -short/-long输出短/长文件名(+如有) --volume输出volume格式 ┃ ┃ │ │ --part输出\\?\\Harddisk#Partition# --volumepart先--volume再--part --1 如果含空格加引号 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│FDIR fPath=C:\Windows\System32\calc.exe 或 FDIR aPath=%CurDir%\Path1\Path2\FileName ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※当文件名是相对路径时,返值结果是 PECMD.EXE 的工作目录或配置文件的工作目录; ┃ ┃ │ │※示例1结果是"C:\Windows\System32",示例2结果是"%CurDir%\Path1\Path2"。 ┃ ┃ │ │※支持 \\?\GLOBALROOT\Device\Harddisk0\Partition1\A.TXT(其它同) ┃ ┃ │ │ \\?\Harddisk0Partition1\A.TXT \\?\HarddiskVolume1\A.TXT \\?\ImDisk0\A.TXT ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'FDRV' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│FDRV <变量名><=>[文件目录名] ┃ ┃ │ │FDRV <变量名>= //返回系统所有盘符,返回值是 C:|D:|E:|F:|.... 的形式。 ┃ ┃ │ │FDRV <变量名>=*: //返回系统所有盘符,返回值是 C: D: E: F: .... 的形式。 ┃ ┃ │ │FDRV <变量名>=* //返回系统所有盘符,返回值是 C D E F .... 的形式。 ┃ ┃ │ │FDRV <变量名>=? //返回系统所有DOS设备 ┃ ┃ │ │FDRV -link? 返名,所有名,终极名=符号名 //返回链接对象 ┃ ┃ │ │FDRV -vol [卷标名][,文件系统名][,序列号名][,最大文件名长度名][,标志名][,UUID名]=驱动器名 ┃ ┃ │ │//返回卷标等 *ab为不搜索AB软盘。 -rsort为反序 。-idle为空闲盘符;-idlec除AB。 ┃ ┃ │ │FDRV -setvol 驱动器名=卷标 //设置卷标 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│返回指定"文件目录名"所在的分区盘符(以":"结束,最后无"\")或系统所有盘符。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■变量名: 用于保存分区盘符的变量名称; ┃ ┃FDRV│ │■文件名: 合法的文件目录名称(也可省略,省略时另有意义,见《备注》的解释。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│FDRV fDrive=C:\a 或 FDRV Drvs= 或 FDRV *vol V=\\?\Harddisk0Partition2 或 \\?\HarddiskVolume5┃ ┃ │ │或\\?\ImDisk0\ 或\\?\Volume{cc0ac7c9-27c4-11e5-ba3b-806e6f6e6963}\ 或\\?\STORAGE#Volume#{cc0┃ ┃ │ │ac7c0-27c4-11e5-ba3b-806e6f6e6963}#0000008481CD9800#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\ ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※当文件名是相对路径时,返值结果是 PECMD.EXE 的工作目录或配置文件的工作目录所在的分区盘符; ┃ ┃ │ │※当省略"文件目录名"时返回系统所有盘符,返回值是 C:|D:|E:|F:|.... 的形式; ┃ ┃ │ │※示例1结果是"C:",示例2结果是系统所有盘符的列表(注意这个列表不是固定的,会随时发生变化)。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'FEXT' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│FEXT <变量名><=><文件名> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│返回指定"文件名"的扩展名(不带".") ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■变量名: 用于保存扩展名的变量名称; ┃ ┃FEXT│ │■文件名: 合法的文件名称。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│FEXT fExt=C:\Windows\System32\calc.exe 或 FEXT aExt=X:\Path1\Path2\FileName ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※示例1结果是"exe",示例2返回结果是空值; ┃ ┃ │ │※FDIR、FDRV、FEXT 的返回值都可以用 FIND 命令检测或比较。 ┃ ┃ │ │※支持 \\?\Harddisk0Partition2\A.TXT \\?\HarddiskVolume5\A.TXT \\?\ImDisk0\A.TXT ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'FILE' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│FILE [-simpleprogress|-progress -force[q] -file -m -q] [-] 文件路径[<操作符>目标路径] ┃ ┃ │ │FILE 文件路径>>不带父目录的新名称 //模仿CMD的 Ren,只改名,不改所在目录┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│删除、复制、移动或重命名文件目录。-m多文件“;”间隔。 -开关结束 -rd删除空目录 -delay延迟 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │■-simpleprogress显示进度条,-progress显示进度条和文件名。--file只操作文件 -su提权 -force[q]┃ ┃ │ │ 强制删除(尽可能)[自己先] -q 不出警告(如IE缓存目录) -delme 删除自己锁定的文件/目录 ┃ ┃ │参数│■文件路径: 被操作的源文件目录名,删除、复制和移动文件目录时支持DOS通配符"?"或"*"; ┃ ┃ │ │■操作符号: 用"->"、"=>"、">>"分别表示移动、复制、重命名文件目录,省略操作符号表示删除操作。┃ ┃FILE│ │ ">>"重命名时,文件路径、新名称不要带DOS通配符,且都只有一个,新名称必须不 ┃ ┃ │ │ 存在,目录不变。其实"->"也有改名功能,而且更强大。 ┃ ┃ │ │■目标名称: 将源文件目录移动、复制到的目标路径名,不能含DOS通配符,要用确定的文件目录名。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│FILE %SystemRoot%\INF\*.INF=>%TEMP%或FILE pphk->pphk22或FILE -delme %CurDir% ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※如果以RAMDISK启动系统,可删除启动后无用文件(如2MB的NTOSKRNL.EXE)来增加RAMDISK的可写空间; ┃ ┃ │ │※移动与复制时,如只指定了目录,则仅复制或移动一个指定名称的目录到目的地,如例2;如果是操作 ┃ ┃ │ │ 文件但所指定的目的地并不存在所指定的目录,也不会进行操作,如例3; ┃ ┃ │ │※所指定的目标目录或文件不存在,将终止操作;如例2与3中的“pphk”“top.bmp”目标不存在的话; ┃ ┃ │ │※要移动文件夹到一个新的文件夹,请看范例: FILE pphk=>pphk22 ┃ ┃ │ │※除重命名,源和目标可以是“;”分隔的多个。多目标时,目标和源一样多,对应着操作;目标为目标 ┃ ┃ │ │ 本名,不能是所在目录。如:FILE --m x.log;x3.log=>FOLDER\x11.log;HELP\x33.log ┃ ┃ │ │※-file 支持 \\?\Harddisk0Partition2\A.TXT \\?\HarddiskVolume5\A.TXT \\?\ImDisk0\A.TXT ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'FIND' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│FIND[|^#~+-][*c] [! ]<条件>,[命令1][! 命令2] //注意!后有个空格 ^#~+-为!的替代定界词。 ┃ ┃ │格式│FIND{|^#~+-}{*c} {! }{$}[{! }<条件1> 关系运算 {! }<条件2> ..],{命令1}{! 命令2} //组合条件 ┃ ┃ │ │FIND 查询条件=?,变量名 //查询 ┃ ┃ │ │FIND --pid*@.[#父进程ID|进程ID] 变量名,程序名 //查询,*为只前部匹配“.”匹配扩展名 ┃ ┃ │ │FIND [--sub][--forpid:PID|--fortid:TID] --wid*@[父窗口ID] 变量名,窗口标题//查询*为只前部匹配┃ ┃ │ │FIND [--sub][--forpid:PID|--fortid:TID] --wid#父窗口ID 变量名,控件ID //查询控件的窗口ID ┃ ┃ │ │FIND --menu 变量名,窗口ID //查询窗口的MENU标识 ┃ ┃ │ │FIND --menu#0 变量名,MENU标识 //查询MENU的子MENU标识 ┃ ┃ │ │FIND --menu#序号 变量名,MENU标识 //查询指定序号子MENU信息 序号>=1 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│依据条件表达式,成立则执行命令群组1,不成立则执行命令群组2。--sub递归。^#~+-为定界词 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │▲!注意:<条件>前的"!"表示条件取反。[前的$表示后全为$比较,可省;关系运算符为&|@(异或) ┃ ┃ │参数│■条件 对[内存总数]或[磁盘总空间]或[内存进程]或[按键]的判断。 ┃ ┃ │ │※内存总数 MEM<比较符>数值。单位M,进1法。 ┃ ┃ │ │※内存总数 MEMB<比较符>数值。单位字节 ┃ ┃ │ │※磁盘总空间 R:\<比较符>[*]数值,R:表示盘符。(MB) *则字节单位 ┃ ┃ │ │※按键 KEY<比较符>[#]数值。 ┃ ┃FIND│ │※内存进程 内存进程名(含*?)。 ┃ ┃ │ │※字符串比较 *左部PE变量名<比较符>右部PE变量名。 ┃ ┃ │ │※字符串比较 $左部<比较符>右部,不区分大小写的。左部、右部支持变量,含有比较符时需要变量。 ┃ ┃ │ │ 为方便直接和比较符本身比较,$后的第一字符不当作比较符,当做比较内容的左部。 ┃ ┃ │ │※数值比较 |左部<比较符>右部;带符号浮点数。 #则为整数比较 ┃ ┃ │ │※比较符 比较操作符"="、"<>"、"<"、">"、">="、 "<=",分别表示:等于、不等于、小于、大于 ┃ ┃ │ │ 、大于等于、小于等于。有后缀*c才区分大小写。 ┃ ┃ │ │※数值 比较的数值,磁盘单位是MB,按键数值是按键代码。可带TGMKS ┃ ┃ │ │※命令群组 要执行的一条或多条命令,多条命令之间用"|"分开。命令群组之间用分隔符"!"分开。 ┃ ┃ │ │※FIND| 群组方式,表示检测后面参数中的"|"字符。默认为不检测“|”,以免出错。 ┃ ┃ │ │※查询条件 MEM=? MEMB=? R:\=? KEY=?数值 ┃ ┃ │ │※--wid @为全部: 一行一个。序号 窗口ID 控件ID 父窗口ID 线程ID 进程ID 类型 标题。以TAB间隔。 ┃ ┃ │ │※--menu#序号: 序号 MENU标识 控件ID 文本。以TAB间隔。序号为空时返回全部,多行。 ┃ ┃ │ │※--pid @为列表: 一行一个。进程ID 父进程ID 内存K CPU使用时间(100ns) 总时间 文件名 命令行。 ┃ ┃ │ │ 0进程的“CPU使用时间”为系统“空闲时间”。以TAB间隔。 ┃ ┃ │ │※FIND --pid 变量名 //返回: 空闲时间 总时间 CPU个数 1秒的时钟数 一时钟的100ns数。 ┃ ┃ │ │--[in]visible :窗口[不]可见。 --class:窗口类名 ┃ ┃ │ │*var 条件中可直接用PE变量名(如字符串的名)。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│FIND MEM<128,SHEL %SystemRoot%\SYSTEM32\XPLORER2.EXE!SHELL %SystemRoot%\EXPLORER.EXE ┃ ┃ │ │FIND $%m%=1,!! find $%n%=1, mess aaa!mess bbb //嵌套范例 ┃ ┃ │ │FIND 条件1,!! FIND 条件2,! FIND 条件3, 做某事1! 做某事2 //嵌套句式,可和IFEX混合 ┃ ┃ │ │FIND [ C:\ > 100 & $"A " <> "A" & explorer.exe ], 做某事1! 做某事2 //组合范例 ┃ ┃ │ │FIND --pid*.123 V, 或 FIND --pid*@.123 V, //检测PID 123 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※本命令功能强大,也比较复杂,且可以嵌套(FIND或IFEX)使用,判断多个条件。 ┃ ┃ │ │※本命令嵌套FIND或IFEX命令时,被嵌套的命令中使用"!"分隔符,小心不要引起混淆。 ┃ ┃ │ │ 逗号“,”后紧接!!,表示没有ELSE部分;方便嵌套组合。 ┃ ┃ │ │※与本命令功能相似的命令是 IFEX 命令。 ┃ ┃ │ │※按键数值,A~Z或0~9 或编码0xNN 或2位以上数字编码。#可无。只为兼容。有#一定是编码方式。 ┃ ┃ │ │ 按键可以用VK_序列。按键结果保存在环境变量 %PressKey% 中。 ┃ ┃ │ │ 按键只有=有意义,检测指定按键(对其它键不检测,参WAIT)。 ┃ ┃ │ │ 和单独的=比较,=可以接在$之后。复杂的需要变量模式。 ┃ ┃ │ │※--forpid:PID --fortid:分别限定所属的PID或线程ID。 ┃ ┃ │ │※组合条件:[]为标志;可嵌套,建议()。[前的$则全为$比较。关系运算|&@。此时需要空格间隔。 ┃ ┃ │ │※支持 \\?\Harddisk0Partition2\ \\?\HarddiskVolume5\ \\?\ImDisk0\ ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'FLNK' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│FLNK [-j] <目标路径名称>,<源文件路径名>[,链接类型标志] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│建立NTFS文件系统的硬链接或符号链接 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■目标路径名称: 要建立硬链接或符号链接的文件目标名; ┃ ┃ │ │■源文件路径名: 原本已存在的文件路径名称; ┃ ┃FLNK│ │■链接类型标志: 数值,省略时为默认值0,表示建立硬链接,1表示建立符号链接。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│FLNK %WinDir%\System32\abcd.DLL,%CurDir%\abcd.DLL 或 FLNK %WinDir%\MyTool,%CurDir%\MyTool,1 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※XP、2003系统不支持符号链接,不支持目录链接,也不支持跨卷建立硬链接; ┃ ┃ │ │※本命令支持环境变量解释(见示例),也支持使用通配符; ┃ ┃ │ │※本命令是调用Kernel32.DLL的CreateHardLinkW或CreateSymbolicLinkW工作,是否成功与系统有关。 ┃ ┃ │ │※-j 或 类型2 为目录链接。<源文件路径名>为空则删除。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'FONT' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│FONT [-] <字体路径>[,起始分区] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│(反)注册字体或外挂字体 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃FONT│参数│■字体文件路径和起始分区。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│FONT %CurDrv%\外置程序\FONT 或 FONT \WINDOWS 或 FONT \WINDOWS,C: ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※命令第1个字符是"\"时,将从指定的起始分区开始搜索机子所有分区 Windows\Fonts目录下的字体,并┃ ┃ │ │ 安装注册,定义起始分区可避免搜索机子中存在的软驱,省略起始分区将搜索机子所有分区(含软驱)。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'FORM' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│FORM [-raw] [-x] <[变量名][,BUSNAME]>=<*|[\\.\]卷名称|设备名> ┃ ┃ │ │FORM <-free|-userfree|-userall> [变量名=<卷名称|目录> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│返回指定分区盘符的介质类型。※-raw:不区分USB(避免软盘)。-x:详细可区别软盘(2=1.44M) ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■变量名: 用于保存指定盘符介质类型的变量名称。BUSNAME保存总线类型,弥补介质类型信息不足。 ┃ ┃ │ │■卷名称: 系统存在的合法盘符、文件目录名。为*则返回盘符列表 ┃ ┃ │ │■设备名: \\.\PhysicalDrive0之类,此时返回媒体类型和总线类型 ┃ ┃ │ │■-free:全部剩余空间(字节),-userfree:当前用户可用剩余空间,-userall: 当前用户总空间 ┃ ┃FORM├──┼──────────────────────────────────────────────┨ ┃ │示例│FORM DriveType=F: 或 FORM DriveType=C:\Windows 或 FORM DriveType=%CurDir% ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※卷名称可以引用环境变量,如示例3; ┃ ┃ │ │※命令的返回值为以下字符串: DRIVE_UNKNOWN、DRIVE_NO_ROOT_DIR、DRIVE_REMOVABLE、DRIVE_FIXED、┃ ┃ │ │ FUNCTION_ERROR、DRIVE_REMOTE、DRIVE_CDROM、DRIVE_CDROMUSB、DRIVE_RAMDISK、DRIVE_USBFLASH、┃ ┃ │ │ DRIVE_USBDISK、或数字(其它)。 ┃ ┃ │ │※本命令配合 FDRV 命令可以列出系统所有盘符卷的介质类型,参照 FDRV 命令的说明。 ┃ ┃ │ │ 总线类型 BusTypeUnknown=0,BusTypeScsi=1,BusTypeAtapi,BusTypeAta,BusType1394,BusTypeSsa, ┃ ┃ │ │ BusTypeFibre,BusTypeUsb,BusTypeRAID,BusTypeiScsi,BusTypeSas,BusTypeSata,BusTypeSd, ┃ ┃ │ │ BusTypeMmc,BusTypeVirtual,BusTypeFileBackedVirtual,BusTypeSpaces,BusTypeNvme,BusTypeSCM, ┃ ┃ │ │ BusTypeUfs,BusTypeMax,BusTypeMaxReserved=0x7F ,<0出错 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'FORX' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│FORX [*ab] [*cur] [/S[:子目录级数]] [/O:N] [/O:-N] [/size:最小:最大:对齐] [@|$][[!]\]文件,变┃ ┃ │ │ 量,[次数],命令及参数 ┃ ┃ │ │FORX *[v] 变量表[名],<变量>,<命令> [参数表] //*v后为变量表名 ┃ ┃ │ │FORX *NL[:分隔符] 多行PE变量名,<变量>,<命令> [参数表] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│对匹配的文件目录进行对应的命令操作,本命令的功能类似CMD.EXE的for命令。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│ *ab 排除AB移动盘;/S 搜寻子目录;/O:N 按名字排序;/O:-N 反序。*cur:当前盘符优先 ┃ ┃ │ │ *qu[~]支持"定界 *off 返回变化部分 *bf 广度优先 ┃ ┃ │ │■文件: 指定文件目录名,可带有通配符。 ┃ ┃ │ │■变量: 指定变量名,指代找到文件,该变量不要重名。参数表中可以多处引用。 ┃ ┃ │ │■次数: 对匹配的文件目录执行相应次数的命令操作,<=0表示对所有存在的文件执行命令操作。 ┃ ┃ │ │■命令: WinCMD.EXE合法有效的命令,命令后的参数格式和个数由该命令而定。 ┃ ┃ │ │■多行PE变量名: 存储多行信息的变量名,注意只是名字则没有%.每次返回一行。只能是PE变量名。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃FORX│示例│◆FORX %CurDir%\Path1\*.DLL,AnyDLL,0,CALL $%AnyDLL% ┃ ┃ │ │◆FORX \auto*.INF,AutoRunVirus,0,FILE %AutoRunVirus% ┃ ┃ │ │◆FORX !\Tools\Tools.INI,MyIni,1,LOAD %MyIni% ┃ ┃ │ │◆FORX /S /O:-N C:\windows\*.INI,f,0,MESS %f% @#OK ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※该命令可以搜索到带有属性的文件目录,如隐藏属性的文件目录。 ┃ ┃ │ │※前导"\"表示搜索所有分区。"!"表示对所有分区进行逆序搜索。 ┃ ┃ │ │※前导"@"表示仅搜索目录,"$"搜索目录和文件,省略该前导表示仅搜索文件。 ┃ ┃ │ │※前导"*"表示变量表模式,以空字符分隔。 ┃ ┃ │ │※示例1,表示注册 %CurDir%\Path1\ 目录中的所有 DLL。 ┃ ┃ │ │※示例2,表示删除所有分区根目录的 auto*.INF 文件。 ┃ ┃ │ │※示例3,表示逆序搜索所有分区Tools目录下Tools.INI,并把搜索的第1个Tools.INI用LOAD命令加载。 ┃ ┃ │ │※命令及参数为空时,变量返回找到的文件目录个数或命令执行的次数;为*返回文件列表。 ┃ ┃ │ │※支持 \\?\Harddisk0Partition2\*.* \\?\HarddiskVolume5\*.* \\?\ImDisk0\*.* ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'GETF' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│GETF[#] [-err:错误码] [-g=列数[@间隔串]] <文件名称>,<位置长度>,<变量名称> ┃ ┃ │ │GETF -find 大文件名称,[大位置[#大长度[#子长度[#子偏移[#块大小[#块内偏移]]]]]], ┃ ┃ │ │ [*[<次数>]]变量名称,目标文件|*目标变量名 //2进制查找 *则多个 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│以 BINARY 形式读取指定文件的数据,并将数据赋值给指定的变量名。 后缀#为读入2进制PE对象。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■-g=列数:在多少列之后的位置自动插入换行。-fd=[文件句柄|?句柄变量名:加速 -free=句柄:释放 ┃ ┃ │ │■文件名称: 合法的文件名,支持环境变量解释;可以使物理磁盘如\\.\PhysicalDrive0,逻辑磁盘如 ┃ ┃ │ │ C:,分区设备如\Device\Harddisk0\Partition1;可以#[.]内部资源号[|目录],.为原始数据。 ┃ ┃ │ │ 特殊资源目录可以 #数字 -bin 或&开头则为PE变量 ┃ ┃ │ │■位置长度: 数值,由要读取的起始位置和要读取的长度(字节)组成,之间用"#"分隔,如 1023#32; ┃ ┃ │ │ 可带TGMKS后缀。K=1024, S=512。长度为*这读到文件尾。 ┃ ┃ │ │■变量名称: 字符串,用于保存读取结果的的变量名。 ┃ ┃ │ │■-find: 2进制查找目标在大文件中的起始位置。大位置为开始,大长度为限制。子长度为目标长度限制┃ ┃ │ │ 大位置/大长度/子长度/子偏移 空缺或<=0忽略;块大小默认512。"大位置%块大小"可作为块内偏移 。┃ ┃GETF├──┼──────────────────────────────────────────────┨ ┃ │示例│GETF %CurDir%\Memu.LST,0x400#0x10,FileData 或 GETF %CurDir%\Memu.LST,-1,FileLength ┃ ┃ │ │GETF -bin &Src,2#4%,Dst 或 GETF# %CurDir%\Memu.LST,0x400#0x10,&DataBin ┃ ┃ │ │TEAM ENVI$# &DATA=33 33 | GETF -find A.ISO,0#1M#2##512,&POS,*&DATA //512字节对齐查找 ┃ ┃ │ │TEAM ENVI$# &DATA=33 33 | GETF -find A.ISO,0#1M#2##1,&POS,*&DATA //1字节对齐查找 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※GETF命令读取文件的起始位置是相对于文件基址的,如要读取文件的第1个字节,则起始位置为 0x00;┃ ┃ │ │※命令的结果以16进制数值表示,数值之间由空格分隔,省略起始位置或省略读取长度均取其默认值1; ┃ ┃ │ │※以 BINARY 方式修改文件的对应命令是 PUTF,建议不要用GETF命令和PUTF命令处理超大体积的文件; ┃ ┃ │ │※起始位置小于0或超过文件长度时,命令的结果为10进制表示的文件长度,出错结果默认0xFFFFFFFF; ┃ ┃ │ │※另外以字符串方式读取文件或修改文件命令为READ命令和WRIT命令。大量(7K)数据需要PE变量; ┃ ┃ │ │※数据格式: 数值之间用空格分隔,如 0x23 0xAD 0x1C 0x80。 ┃ ┃ │ │※-find 块大小为对齐长度,默认为512。 如设为1,则按字节对齐查找所有内容。次数<0为反向 ┃ ┃ │ │※资源可以写为:"[文件名]""#资源名[|目录名]" 后面1对""可省。此时资源名可为非数字。 ┃ ┃ │ │※支持UD文件:ud:UD文件名:UD内部文件名 ┃ ┃ │ │※支持 \\?\Harddisk0Partition2\A.TXT \\?\HarddiskVolume5\A.TXT \\?\ImDisk0\A.TXT ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'GROU' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│GROU [-right] [-center] [*] <名称>,<形状>,[标题],[状态][,前景色#背景色][,字体] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在_SUB定义的窗口内建立组合面板,用于说明组合面板内控件的功能和作用。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│ <组合面板名称>前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │ │■组合面板名称: 字串,组合面板名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■组合面板形状: 组合面板的位置和大小,格式为,左上宽高均为数值。 ┃ ┃GROU│ │■组合面板标题: 字串,用以描述组合面板的作用或功能。 ┃ ┃ │ │■组合面板状态: ±16不可见。 字体见EDIT ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│GROU Group1,L8T4W336H400,注册WimShExt.DLL ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │※该命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │备注│※要设置组合面板标题,可以使用"ENVI @组合面板名称=组合面板标题"来设置 ,参照ENVI命令的说明。┃ ┃ │ │※可用"ENVI @组合面板名称.Visible=数值"来设置编辑框的可见状态;0为不可见,非0为可见。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'HASH' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│HASH [文件名称|$字符串内容|*PE变量名],[变量名称],[校验类型] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│计算文件或字符串CRC32、MD5、SHA1 或 SHA256 校验码。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■文件名称: 要计算Hash校验码的文件全名,含路径,支持环境变量解释; ┃ ┃ │ │■字符串内容: 字符串,可含中文,区分大小写。"文件名称"和"字符内容"两个参数只取其一; ┃ ┃ │ │■前导符$ : 字符串标志;文件名称/字符内容有","时后面的2个","不能省. 字符串按ASCII编码 ┃ ┃HASH│ │■变量名称: 用于保存计算结果的变量名,用字符串表示; ┃ ┃ │ │■PE变量名: 直接计算其Hash,不用生成一个临时文件,PE变量名有&则*可省; ┃ ┃ │ │■校验类型: 字符串 "CRC32" 或 "MD5" 或 "SHA1" 或 "SHA256" ,默认"MD5"。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│HASH %SystemRoot%\System32\UserInit.EXE,md5UserInit或HASH $mdyblog.blog.163.com,hPSW,SHA1 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※用HASH命令计算字符串HASH校验码时。大小不限。 ┃ ┃ │ │※读取文件出错时MD5、SHA1和CRC32均为空值;空字符串的CRC32为"00000000",MD5 ┃ ┃ │ │ 为"d41d8cd98f00b204e9800998ecf8427e",SHA1为"da39a3ee5e6b4b0d3255bfef95601890afd80709"。 ┃ ┃ │ │※给出变量名,HASH命令计算结果保存到指定的变量中,示例2可通过环境变量%PSWh%来引用。 ┃ ┃ │ │※省略变量名,HASH命令的计算结果以消息窗口的形式显示,同时也将结果保存到粘帖板中。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'HELP' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│HELP [-hlpdoc=帮助页] [*[命令行高度]] [[~]目录书签] [文字前景颜色][#文字背景颜色] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│显示帮助信息。有*时命令行高度<=-100000或空,没有命令行。高度>=100000没有帮助窗口 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃HELP│参数│■目录书签 要直接显示的目录项(前几个字符);~前导强制为搜索文本而不是书签,后加.则该行正好 ┃ ┃ │ │ 显示在顶行(否则做表格调整)。*表示换行符 ┃ ┃ │ │■数值(支持16进制)。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│HELP 0x00EEFF#0xFF0000 或 HELP 键值 或 HELP ~示例│EDIT. ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※不用命令行参数,直接执行本程序,也会显示帮助信息。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'HIDE' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│HIDE ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│隐藏 PECMD.EXE 进程。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■无 ┃ ┃HIDE├──┼──────────────────────────────────────────────┨ ┃ │示例│HIDE ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※本命令目的是隐藏 PECMD.EXE 进程,以防被其它程序或人为误杀。 ┃ ┃ │ │※本命令不能在命令行中使用,只能在配置文件中使用。 ┃ ┃ │ │※SHEL命令必须在 HOTK 和 HIDE 命令之后。 ┃ ┃ │ │※只有通过SHEL命令加载SHELL时,HIDE命令才能隐藏PECMD.EXE进程。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'HIVE' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│HIVE [-u] [-super[_r]] [-quick] [*] <子项名>,[文件名] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│加载或卸载注册表配置文件,相当于 REG.EXE 的 LOAD 命令和 UNLOAD 命令的功能。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■-super_r 强制设置子孙项权限。 -quick不添加权限(默认)。 -u加载到HKEY_UESRS ┃ ┃HIVE│ │■子项名 指定加载或卸载注册表配置文件时在 HKEY_LOCAL_MACHINE 下的子项名称。*为导出到文件。 ┃ ┃ │ │■文件名 被加载的注册表配置文件名,省略该参数时为卸载指定名称的子项。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│HIVE PE,F:\BOOT\PE 或 HIVE PE 或 HIVE PE,%CurDrv%\BOOT\PE ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※HIVE命令加载注册表配置单元后,PECMD将设置Everyone获得完全控制权限,以便用户读取修改。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'HKEY' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│HKEY[$*] [辅助按键+]<按键字母|#虚拟按键代码>,<热键命令> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置活动窗口或程序级热键,并指定该热键执行的命令。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│※后缀"$"则程序运行时均有效(默认),不可重用。*本窗口活动时才有效,不同窗口可重用, 个数不限。┃ ┃ │ │■辅助按键: 4个辅助按键(Alt、Ctrl、Shift和Win)可用字符串表示,辅助按键间用"+"连接。 ┃ ┃ │ │■按键字母: 简单按键("a"~"z"或"0"~"9")可直接表示,"A"~"Z"表示带SHIFT。可以直接用后面表中 ┃ ┃ │ │ 的VK_名字(VK_可省),或附录替代串。 ┃ ┃ │ │■按键代码: 由前导符"#"接虚拟按键代码组成,见示例1和示例2,支持16进制数值。 ┃ ┃HKEY│ │■热键命令: 必须是 PECMD 支持的有效命令。 --del表示删除。(窗口被KILL时立即全删除其HKEY) ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│HKEY #255,SHUT R 或 HKEY Ctrl+Alt+#0x41,DISP W800H600B16F75 或 HKEY Ctrl+Alt+D,TEMP @Delete ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※该命令可以位于_SUB命令和_END命令之外(用$),以执行某些功能。 参照_SUB、CALL命令说明。 ┃ ┃ │ │※示例1表示按下电源键调用SHUT命令重启,示例2表示按下Ctrl+Alt+A调用DISP命令设置显示模式。 ┃ ┃ │ │※示例3表示按下Ctrl+Alt+D调用TEMP命令清除临时目录,注意设置的热键不能与其它程序的热键冲突。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'HOME' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│HOME [IE主页],[数值1],[数值2] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置IE主页、锁定IE主页及禁用注册表编辑器。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■IE主页: 支持各种类型网址和本地网页文件,如"http:\\www.mssb.com" ┃ ┃ │ │ 当网址为本地网页文件时要使用文件全名(可带环境变量),如 "%SystemRoot%\ReadME.htm" ┃ ┃HOME│ │■数值1 : 非0时锁定IE主页,即禁止修改IE主页,该参数省略时默认为0,可修改IE主页。 ┃ ┃ │ │■数值2 : 非0时禁用注册表编辑器,该参数省略时默认为0,可使用注册表编辑器。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│HOME http:\\www.sbms.com,1,1 或 HOME %SystemRoot%\ReadME.htm ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※本命令在脚本或CMD批处理中均可使用;IE主页或注册表编辑器被恶意工具锁定时可用该命令解锁。 ┃ ┃ │ │※示例1表示将 "http://www.sbms.com" 设置为主页,同时禁止修改主页,禁止使用注册表编辑器。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'HOTK' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│HOTK [--delall] [?[.]返回名] [辅助按键+]<按键字母|#虚拟按键代码>[,热键命令] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置系统级热键,并指定该热键执行的命令(.EXE 或 .CMD 或 .BAT),支持PECMD的内部命令。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│※辅助按键: 4个辅助按键(Alt、Ctrl、Shift和Win)可用字符串表示,辅助按键间用"+"连接。 ┃ ┃ │ │■按键字母: 简单按键("a"~"z"或"0"~"9")可用字母表示,"A"~"Z"表示带SHIFT。其它按键要用前导 ┃ ┃ │ │ 符"#"连按键代码表示。可以直接用后面的VK_名字(VK_可省),或附录替代串,支持16进制。┃ ┃ │ │■按键代码: 由前导符"#"接虚拟按键代码组成,见示例1和示例2,支持16进制数值。 ┃ ┃ │ │■热键命令: 必须是 WinCMD 支持的有效命令。 --del表示删除。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃HOTK│示例│HOTK #255,EXEC PECMD.EXE SHUT 或 HOTK Ctrl + Alt + #36,EXEC PECMD.EXE 或 HOTK ?V #255 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※第1个示例是按下电源键调用PECMD的SHUT功能关机。 ┃ ┃ │ │※本命令不能在命令行中使用,只能在配置文件中使用。 ┃ ┃ │ │※建议抛弃 PELOGON 。 热键个数不限。 ┃ ┃ │ │※热键的注册结果写在注册表"HKEY_LOCAL_MACHINE\SOFTWARE\PELOGON"项下。 ┃ ┃ │ │※HOTK是实时的,随时可用,立即生效。 ┃ ┃ │ │※一般通过SHEL命令加载SHELL时,才能通过HOTK命令注册热键。※现在1:正常系统也可用;2:立即生效。┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'IFEX' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│IFEX[|][^#~+-][*ab] [! ]<条件>,[命令1][! 命令2] //注意!后有个空格 //*ab排除AB移动盘 ┃ ┃ │格式│IFEX{|}[^#~+-]{*ab} {! }{$}[{! }<条件1> 关系运算 {! }<条件2> ..],{命令1}{! 命令2} //组合条件┃ ┃ │ │IFEX 查询条件=?,变量名 //查询 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│依据条件表达式是否成立,成立则执行命令群组1,不成立则执行命令群组2。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │▲!注意:<条件>前的"!"表示条件取反。 ^#~+-为!的替代定界词。 ┃ ┃ │参数│※条件 对[可用内存]或[磁盘可用空间]或[文件目录]或[按键]的判断。 ┃ ┃ │ │※可用内存 MEM<比较符>数值。单位M,进1法。MEMU 可用内存 MEMA 总内存 ┃ ┃ │ │※可用内存 MEMB<比较符>数值。单位字节 MEMBU可用内存 MEMBA总内存 ┃ ┃ │ │※磁盘可用空间 R:\<比较符>[*]数值,R:表示盘符。(MB) *则字节单位 ┃ ┃ │ │※按键 KEY<比较符>数值。 ┃ ┃ │ │※文件目录 文件目录名,可以使用通配符。\结尾则必须为目录。 ┃ ┃ │ │※数值比较 $左部<比较符>右部。带符号浮点数。 #则为整数比较 ┃ ┃ │ │※字串比较 |左部<比较符>右部。 或'左部'<比较符>'右部' ┃ ┃IFEX│ │※比较符 比较操作符"<"、">"、"="、">="、"<="、"<>","&", "|","@",分别表示:小于、大于、┃ ┃ │ │ 等于、大于等于、小于等于、不等于、与、或、异或。&|@只用于组合条件,前后有空格。┃ ┃ │ │※数值 比较的数值支持整数与浮点数,磁盘单位是MB,按键数值是按键代码。可带TGMKS ┃ ┃ │ │※命令 要执行的一条或多条命令,多条命令之间用"|"分开。命令群组之间用分隔符"!"分开。┃ ┃ │ │※IFEX| 群组方式,表示检测后面参数中的“|”字符。默认不检测“|”,以免出错。 ┃ ┃ │ │※查询条件 MEM[UA]=? MEMB[UA]=? R:\=? KEY=?数值 ┃ ┃ │ │ ''为字符串比较。【:e文件名】为检测文件名 【:p程序名】为检测进程 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│IFEX KEY=17,TEAM TEXT 搜索系统字体…| FONT \WINDOWS!TEXT 安装外挂字体 ┃ ┃ │ │IFEX 条件1,!! IFEX 条件2,! IFEX 条件3, 做某事1! 做某事2 //嵌套,可和FIND混合 ┃ ┃ │ │IFEX [ 条件1 & ! 条件2 & "a b.txt" ], 做某事1! 做某事2 //组合范例 ┃ ┃ │ │IFEX [ $2 < 12 & C:\>10 & C:\ > 10 & ( C:\boot.ini ) & MEM > 100 ], MESS YES //组合范例 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※本命令功能强大,也比较复杂,且可以嵌套(IFEX或FIND)使用,实现判断多个条件。关系运算符&|@ ┃ ┃ │ │※本命令嵌套FIND或IFEX命令时,被嵌套的命令中使用"!"分隔符,小心不要引起混淆。逗号后紧接!!表 ┃ ┃ │ │ 示没有ELSE部分,便于嵌套组合。[前的类型表示[]中默认全部为此类型,可以再单独指定其中的类型 ┃ ┃ │ │※与本命令功能相似的命令是 FIND 命令。 ┃ ┃ │ │※本命令用于变量判断时,所有变量均按double数据类型来处理。 ┃ ┃ │ │※组合条件: []为标志,可嵌套()。[前的$|表示后全为$|比较,可省。关系运算符为|&@。此时基本条件表┃ ┃ │ │ 达式后需要空格断开。 ┃ ┃ │ │※IFEX X:,//只检测是否有X盘符-对应FDRV,不排除X为垃圾盘符。兼容虚拟盘。IFEX X:\,如果返回真,┃ ┃ │ │ 则必有文件系统,否则无文件系统或无盘或为垃圾盘符。 ┃ ┃ │ │※支持 \\?\Harddisk0Partition2\ \\?\HarddiskVolume5\ \\?\ImDisk0\ ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'IMAG' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│IMAG [-gui|-size|-real|-sel|-bupdate] [*] <框名>,[形状],[资源],[命令],[边框颜色],[边框线宽] ┃ ┃ │ │IMAG <-numicong|-numicon|-numbmp|-num:类型> 变量名,,资源 //返回个数 最大号。icong为图标组 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在_SUB定义的窗口内建立一个图片框。 -smooth:光滑 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│<图片框名>称前的 * 表示退出代码块或函数时自动回收。-bupdate 强制为图片文件浏览模式 ┃ ┃ │ │■图片框名: 字串,标签名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■图片形状: 图片框形状的位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■图像资源: 图像文件(Windows支持的图像文件)将被显示在指定的图片框上。可#数字|资源目录 ┃ ┃ │ │■执行命令: WinCMD有效的命令,如 EXEC !%CurDir%\XXX.CMD 或 EXEC %CurDir%\Setup.EXE。 ┃ ┃ │ │■边框颜色: 数值,依次由正常颜色和活动颜色二种颜色组成。二个数值之间由 '#' 字符分隔,格式为 ┃ ┃ │ │ "数值1 #数值2",支持16进制数值,如 0x00FFFF#0xFF0000,颜色值省略采用系统默认颜色┃ ┃IMAG│ │■边框线宽: 数值,表示图片边框的像素大小,"执行命令"省略或无效时边框活动颜色无效,-16不可见 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│IMAG Image1,L8T380W140H70,%CurDir%\logo.gif,EXEC %CurDir%\Setup.EXE,#0xFF00FF,2 ┃ ┃ │示例│ENVI @Image1.update=32:32:100:50::;shell32.dll#52 //更换图标 或 IMAG -gui -real -sel ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※该命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※因WinCMD.EXE是脚本解释程序,不建议加载大尺寸的图像文件,否则显示会慢。支持 BMP RLE压缩的 ┃ ┃ │ │ BMP JPG GIF(图片)AVI动画等。(其它取决于WINDOWS安装了多少图形驱动) ┃ ┃ │ │※"图像资源"支持标准GIF89a/87a格式的GIF动画显示。此时边框颜色和边框线宽参数的设置将无效。 ┃ ┃ │ │※"图像资源"也支持EXE、DLL中的资源图标,格式为<文件名称#ID|目录>,请参照 ITEM 命令的用法。 ┃ ┃ │ │※"当"执行命令"不省略时,鼠标移到图片框上会变成手形鼠标。支持AVI动画。 ┃ ┃ │ │※可用"ENVI @控件名.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※可用"ENVI @控件名.update=w:h[:x:y:边框色:边框宽][;[*?|][]文件名]".不变类型 *新建 ┃ ┃ │ │ ?有才显 |高级图象 表示部分子图(含<>) ┃ ┃ │ │※可用"ENVI @控件名.*del="来删除。 适用于其它控件 ┃ ┃ │ │※可用"ENVI @控件名.stat=变量名"来检测是否有效。 ┃ ┃ │ │※可用"ENVI @控件名.delay=延时ms"来固定GIF动画间隔延时。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'IMPORT' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│IMPORT 文件名 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ I │功能│直接嵌入另一个源文件模块。 组成一个逻辑上的大文件。 ┃ ┃ M ├──┼──────────────────────────────────────────────┨ ┃ P │参数│■文件名。 ┃ ┃ O ├──┼──────────────────────────────────────────────┨ ┃ R │示例│IMPORT 火车模块.wcs ┃ ┃ T ├──┼──────────────────────────────────────────────┨ ┃ │备注│※可以嵌套,内部有防循环功能。 ┃ ┃ │ │※在文件开头放入。运行前机械地嵌入代码。只能是一行的唯一命令,不受FIND/IFEX/_SUB影响。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'INIT' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│INIT [选项列表][,等待时间][,USB起始盘符] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│执行最基本初始化,注册Window外壳,初始化用户文件夹和环境变量,安装键盘钩子,并建立以下目录: ┃ ┃ │ │Favorites 收藏夹目录 Programs 程序菜单目录┃ ┃ │ │Desktop 桌面目录 SendTo 发送到目录 ┃ ┃ │ │StartMenu 开始菜单目录 Personal 我的文档目录┃ ┃ │ │Startup 启动菜单目录 QuickLaunch 快速启动目录┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■选项列表: 支持4个选项,由"C"、"I"、"K"、"U"组成,可不定项使用,不分先后顺序。 ┃ ┃ │ │ ◎选项"C": 表示将光驱的盘符写入环境变量; ┃ ┃ │ │ ◎选项"I": 表示将PECMD的部分功能安装到托盘图标的菜单中; ┃ ┃ │ │ ◎选项"K": 表示执行INIT命令立即安装低级键盘钩子,否则加载SHELL后才安装键盘钩子;┃ ┃INIT│ │ ◎选项"U": 表示检测USB移动硬盘的插入,自动分配盘符,提供移动硬盘的即插即用功能。┃ ┃ │ │■等待时间: 数值,表示移动硬盘插入到设备就绪要等待的时间(毫秒),设置太小可能无法分配盘符。 ┃ ┃ │ │■USB起始盘符: USB起始盘符。默认为U ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│INIT 或 INIT C 或 INIT CU 或 INIT CIK 或 INIT CIKU 或 INIT IU,3000 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※执行INIT命令后,再执行SHEL命令加载指定的SHELL即可启动一个最小化的WinPE。 ┃ ┃ │ │※执行INIT命令前确保%USERPROFILE%所在分区有一定的可写空间,否则INIT命令无法完成工作。 ┃ ┃ │ │※带选项"C"时,光驱盘符保存在以CDROM开头的环境变量中(启动后须用无参数的ENVI命令刷新才生效)。┃ ┃ │ │※带选项"I"时,启动后托盘出现一个图标菜单,菜单集成了常用功能,WinPE定制人员可修改菜单功能。┃ ┃ │ │※选项"K"表示即刻安装键盘钩子,接管Ctrl+Alt+Del呼出任务管理器。 ┃ ┃ │ │※带选项"U"时,启动后可实现移动硬盘的即插即用,可用命令"EJEC U-"或从托盘菜单移除移动硬盘。 ┃ ┃ │ │※"等待时间"参数若省略时,将使用内定的默认值(3000);选项"U"省略时,"等待时间"参数也应省略。 ┃ ┃ │ │※公开发行WinPE的INIT命令不建议带选项"K",本命令不能在命令行中使用,只能在配置文件中使用。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'IPAD' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│IPAD [*] <名称>,<形状>,[初始值],[事件],[类型] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│建立一个IP地址器。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │ <名称>参数前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │参数│■名称: 字串,编辑框名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■形状: 编辑框位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■初始值: 字串,AA.BB.CC.DD ┃ ┃IPAD│ │■事件: 通知变化时执行的命令。 ┃ ┃ │ │■类型: 数字(累加),默认为0,正常编辑框,负号为灰色禁用,0x10位不可见。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│ IPAD IPAD1,L32T244W240H24,192.168.1.100,Mess ENVI @名称.VAL=?.FullIP ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※该命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※"ENVI @名称.Enable=[#]数值",0为禁用状态;1为可用状态(不响应)。#用于子线程 ┃ ┃ │ │※可用"ENVI @名称.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※可用"ENVI @名称.VAL=数值1.数值2.数值3.数值4"来设置IP。 ┃ ┃ │ │※可用"ENVI @名称.VAL=?[.]名字1;名字2;名字3;名字4"来返回IP。有.则名字1返回全部IP,无则控件名┃ ┃ │ │ 和.均可省。 ┃ ┃ │ │※可用"ENVI @名称.VAL=#位置"设置光标位置。1~4。 ┃ ┃ │ │※可用"ENVI @名称.VAL=#位置:起始范围:终止范围"设置数值范围。0~255。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'ITEM' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│ITEM [-na][-b[:父窗句柄]] [-right] [-left] [-def] [-font:字体大小:字体名及修饰] [*] ┃ ┃ │ │ <按钮名称>,<按钮形状>, [按钮标题],[按钮事件],[按钮图标],[状态] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在_SUB定义的窗口内建立一个按钮。-pcenter:图片居中 -round:椭圆按钮 -nscope[f]:无框(f:焦点) ┃ ┃ │ │-def:可回车键 -na:无激活无焦点 -b:绑定父窗口 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│ <按钮名称>前的 * 表示退出代码块或函数时自动回收。 -nfocus:无焦点 ┃ ┃ │ │■按钮名称: 字符串,按钮的名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■按钮形状: 按钮位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■按钮标题: 位于按钮上的文字,用于描述按钮的功能或执行的命令。 ┃ ┃ITEM│ │■按钮事件: 点击该按钮时执行的命令,必须是 WinCMD 支持的有效命令。 ┃ ┃ │ │■按钮图标: 在按钮上显示的图标,格式为<图标文件名#ID>,图标大小 = 按钮高度 - 6。 ┃ ┃ │ │■按钮状态: 数字,默认为0表示可用状态按钮,负号为灰色不可用状态按钮。16不可见。4为多行 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│ITEM Button3,L32T108W300H54,资源管理器,EXEC explorer.exe,%SystemRoot%\explorer.exe ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※ITEM命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※要设置按钮上的文本,可使用 "ENVI @按钮名称=按钮文本" 来设置,参照 ENVI 命令的说明。 ┃ ┃ │ │※"ENVI @按钮名称.Enable=[#]数值",0为禁用状态;1为可用状态(不响应)。#用于子线程 ┃ ┃ │ │※可用"ENVI @按钮名称.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※可用"ENVI @按钮名称.color=[颜色]"来设置文本颜色。 ┃ ┃ │ │※可用"ENVI @控件名称.*del="来删除。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'KILL' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│KILL[**] [-force] [-exitcode=NUM] [-explorer] <进程名|*pid|\[窗口标题]|@[窗口名]|@@窗口ID┃ ┃ │ │ |**tid|*&hpid|**&htid> ┃ ┃ │ │KILL -svr2 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│强制终止指定的进程。NUM指进程退出码. -svr2针对MESS-svr2 -force强制杀除进程 -1 1次 ┃ ┃ │ │-explorer 表示explorer.exe 不自动重启 -gui 表示进程管理器 KILL**强制同步 -tree进程树 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃KILL│参数│进程名称,即 EXE 文件名(或路径),支持*?。pid为进程PID。省略窗口标题/窗口名称为本窗口。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│KILL WinLogon 或 KILL \%ABC% 或 KILL -exitcode=0 *123 或 KILL @ABC ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│此命令将终止与"进程名称"前部分匹配的所有进程,所以如果省略参数,可能将全部进程关闭。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'LABE' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│LABE[-|+.*>] [-right -center -left -trans -nf -w -vcenter -ncmd -3D -mod] [*] ┃ ┃ │ │ <标签名称>,<标签形状>,[标签文字],[*][执行命令],[颜色集合],[字体大小:[字体名]] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在_SUB定义的窗口内建立一条静态文字标签。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■-与|表示水平和垂直滚动条(只能看不能动,否则用EDIT),+表示带边框,.此处不转换“\n”;>则ENVI┃ ┃ │ │ @转换\n;*表示预解释事件(变量)注意以上参数必须紧跟LABE命令后,不要有空格!也没有顺序之分 ┃ ┃ │ │ -right 右对齐, -center居中,-left左对齐,-trans透明标签,-3D:3D轮廓。-mod:凸起 -nf:不闪 ┃ ┃ │ │ -w 自动换行 ┃ ┃ │ │ <标签名称>前的 * 表示退出代码块或函数时自动回收。-vcenter只用于单行文本。-ncmd无命令特性 ┃ ┃ │ │■标签名称: 字串,标签名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■标签形状: 标签的位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■标签文字: 字符串,要标签显示的文字,支持多行显示,文字行间用"\n"表示断行。 ┃ ┃ │ │■执行命令: WinCMD有效的命令,如 EXEC $%CurDir%\a.TXT 或 EXEC $http://mdyblog.blog.163.com。┃ ┃ │ │ *则不显示手形状光标。 ┃ ┃ │ │■颜色集合: 数值,依次由正常文字颜色、正常背景颜色、活动文字颜色和活动背景颜色四种颜色组成,┃ ┃ │ │ 四个数值之间由'#'字符分隔,格式为"数值1#数值2#数值3#数值4",支持16进制数值, ┃ ┃ │ │ 如 0x00FFFF#0xFF0000#0x0000FF#0000,任一颜色值省略都采用系统默认颜色值。 ┃ ┃ │ │ 如果活动组颜色中某一#没有,则同正常组对应颜色;如只有0/1个#,两组颜色相同。 ┃ ┃ │ │■字体大小: 数值,支持16进制数值,如0x0A,省略该参数时为系统默认的字体大小。-16 不可见。 ┃ ┃LABE├──┼──────────────────────────────────────────────┨ ┃ │示例│LABE Label1,L20T280W128H48,请点击"打开"按钮以浏览文件。 ┃ ┃ │ │LABE Label2,L20T24W80H20,帮助说明,EXEC %CurDir%\ReadME.EXE,0xFF0000,12 ┃ ┃ │ │LABE Label3,L20T48W80H20,DSystem,EXEC $http://mdyblog.blog.163.com,0x000000##0x0000FF,14 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※LABE命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※当设置了"背景颜色"或"执行命令"时,"标签文字"会居中显示,居中显示的文字无法分行显示。 ┃ ┃ │ │※要设置标签上文字内容,可以使用 "ENVI @标签名称=标签文字" 来设置 ,参照 ENVI 命令的说明。 ┃ ┃ │ │※"执行命令"若是通过EXEC命令执行网页地址时,可以包含网址字符串"//"。 ┃ ┃ │ │ 当"执行命令"不省略时,鼠标移到其上会变成手形鼠标。 ┃ ┃ │ │※"标签文字"和"执行命令"均不能含有','字符;若"标签文字"非要含","字符,可用变量传入(%DouHao%)┃ ┃ │ │ 可在下一条命令ENVI命令来设置,也可在窗口启动后通过启动一次定时器,在定时器内用ENVI命令来设┃ ┃ │ │ 置。若"执行命令"非要含有','字符,可放入变量;可用CALL命令来完成;可用预解释模式(%MYCMD%)。┃ ┃ │ │※系统默认的字体大小和颜色值在不同系统中可能不同,与系统的设置有关。 ┃ ┃ │ │※可用"ENVI @标签名称.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※关于消息,默认没有消息。有命令时激活消息,没有命令但需要消息,可以用*放到命令域。激活消息 ┃ ┃ │ │ 时被它挡住的控件不能操作。 ┃ ┃ │ │※可用"ENVI @控件名称.*del="来删除。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'LINK' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│LINK[替代分隔符] [--f] [-][_|^|!]<快捷方式路径><,目标路径>[,运行参数][,图标路径#图标索引][, ┃ ┃ │ │ 备注][,起始位置][,快捷键] ┃ ┃ │ │LINK[替代分隔符] [--f] [-][_|^|!]<快捷方式路径><,目标路径>[,运行参数][,图标路径][,图标索引][┃ ┃ │ │ ,备注][,起始位置][,快捷键] <==旧格式 ┃ ┃ │ │LINK[替代分隔符] ? [--f] 快捷方式路径,[目标路径名][,运行参数名][,图标路径名[#[图标索引名]]][┃ ┃ │ │ ,备注名][,起始位置名][,快捷键名][,显示标志名] //查询 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│创建快捷方式。 ^#~+-替代分隔符 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■快捷方式路径: 指定要生成的快捷方式的路径,不需要".LNK"扩展名。 --f则不自动加".LNK"。 ┃ ┃ │ │■目标路径: 指定快捷方式的目标文件或目录。如果目标不存在,将不会创建快捷方式。如果在命令┃ ┃LINK│ │ 文件中使用此命令,目标路径可以使用相对路径(相对于配置文件所在路径)。 ┃ ┃ │ │■运行参数: 目标程序运行参数。 ┃ ┃ │ │■图标路径: 快捷方式图标的路径。 ┃ ┃ │ │■图标索引: 快捷方式图标在文件资源中序号,0为第1个图标,不填则默认。 ┃ ┃ │ │■快捷键: 快捷键,此时图标索引前的“#”或“,”不可省。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│LINK !%Desktop%\宽带连接,RASPPPOE.CMD,,RASDIAL.DLL#19 ┃ ┃ │ │LINK ? %DeskTop%\宽带连接,&FN,&ARG,&FICON#&IICON,&COMMENT,&START,&KEY,&fSHOW ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│☆“_”前导表示以最小化方式启动程序,前导“!”表示以隐藏方式启动程序,可用于执行批处理文件时┃ ┃ │ │ 最小化/隐藏命令窗口。前导“^”表示以最大化方式启动程序。“*”为强制。“,”可变量传入 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'LIST' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│LIST [-h] [*] <下拉列表框名称>,<形状>,<列表框内容>,[列表框事件],[初始选中的条目],[状态] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在_SUB定义的窗口内建立一个下拉列表框。 ★注意:-h:H高度值限定可下拉的高度★ ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │<下拉列表框名称>前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │参数│■下拉列表框名称: 字符串,下拉列表框名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■下拉列表框形状: 下拉列表框形状位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■下拉列表框内容: 下拉列表框内可供选择的条目,条目与条目之间用字符"|"隔开。 ┃ ┃ │ │■下拉列表框事件: 下拉列表框内被选择条目发生变化时执行的命令,必须是 PECMD 支持的有效命令。 ┃ ┃ │ │■默认选中的条目: 初始化下拉列表框设置被选中的条目。 ┃ ┃ │ │■状态: 数字,负号为灰色禁用。0x4可编辑列表,0x200简单列表。0x10不可见。0x100自动垂直滚动条 ┃ ┃ │ │ 。0x400自动排序。0x800大写。0x1000小写。0x2000编辑不触发命令。0x4000可拖入文件。 ┃ ┃ │ │ 0x10000设置不触发命令 鼠标移动WM_COMMAND:CBN_HOVER=0x7001,lp=id 0x7002,lp=ListHwnd ┃ ┃ │ │ 0x20004只读可编辑列表 0x40000/0x80000左/上对齐 0x100000指定宽度 -vcenter:参考高度 垂直居中┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃LIST│示例│LIST List1,L200T360W128H232,EXPLORER|XPLORER2|CMD,ENVI @Label1=%List1%,EXPLORER ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※LIST命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※可用 "ENVI @下拉列表框名称=[+|-|:]条目内容或条目列表" 来修改下拉列表框的条目。 ┃ ┃ │ │ 前导符"+"表示向下拉列表框增加条目,格式为 "ENVI @下拉列表框名称=+新增加或选择的条目" ┃ ┃ │ │ 前导符"-"表示删除下拉列表框指定的条目,格式为 "ENVI @下拉列表框名称=-被删除的条目" ┃ ┃ │ │ 前导符":"表示选定下拉列表框指定的条目,格式为 "ENVI @下拉列表框名称=:被选定的条目" ┃ ┃ │ │ 无前导符表示初始化下拉列表框所有的条目,格式为 "ENVI @下拉列表框名称=条目1|条目2|条目3..."┃ ┃ │ │ 实际只有"条目1"有效,且为新增加或选择的条目;=+也是如此。 ┃ ┃ │ │ 所以下拉列表框的条目内容中的第一个字符不能是 "+" "-" ":";可用变量传入。 ┃ ┃ │ │※ENVI @下拉列表框名称.ADDSEL=新增加或选择的条目 ┃ ┃ │ │※ENVI @下拉列表框名称.DEL=被删除的条目 ┃ ┃ │ │※ENVI @下拉列表框名称.SEL=被选定的条目 ┃ ┃ │ │※ENVI @下拉列表框名称.VAL=重置多个新增加的条目 //|分隔 ;原来的被清除 ┃ ┃ │ │※ENVI @下拉列表框名称.ADD1=多个新增加的条目 //|分隔 ┃ ┃ │ │※ENVI @下拉列表框名称.ADD=多个新增加的条目 //多行串 ┃ ┃ │ │※ENVI @下拉列表框名称.QUERY=行号;变量名 //省略行数,返回全部内容,多行串 ┃ ┃ │ │※可用"ENVI @下拉列表框名称.Enable=数值"来设置下拉列表框可用状态;0为禁用状态非0为可用状态。┃ ┃ │ │※变量 %下拉列表框名称% 为下拉列表框被选中的条目(字符串)。 ┃ ┃ │ │※变量 %下拉列表框名称.isel% 为选择序号(从1开始) ┃ ┃ │ │※ENVI @下拉列表框名称.isel=被选定的条目序号 ┃ ┃ │ │※可用"ENVI @下拉列表框名称.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※可用"ENVI @控件名称.*del="来删除。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'LOAD' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│LOAD [-del] [--m] <文件路径|*[文件名]#脚本ID[|目录]>[|偏移[|长度限制]][*函数名][,起始盘符] ┃ ┃ │ │ [参数表] ┃ ┃ │格式│LOAD <*[文件名]##内部脚本ID[:目录]>[|偏移[|长度限制]][*函数名] 友好别名 [命令参数] //友好型 ┃ ┃ │格式│LOAD [--logs:[*]log文件名] --mem 变量名 [命令行参数] //运行内存动态文件代码 ┃ ┃ │ │//开关 --logs:[*]log文件名] //开关 --Local:Forcelocal=1模式 ┃ ┃ │ │//开关 --EnviMode:EnviMode=1模式 //开关 --ncd:不转移当前目录不设置环境变量(多线程) ┃ ┃ │ │//开关 - :不转移持久栈 ┃ ┃ │ │//开关 -this 或-* :不转移持久栈和执行栈 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│按顺序逐条运行配置文件中的命令。 //注意:文件名有空字符需要""括起来 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■指定文件名(含路径,支持环境变量),及参数。偏移:从此处开始。偏移、长度限制支持TGMKS ┃ ┃ │ │■-del:加载后删除该脚本。 --m: \搜寻模式是执行所有分区上的文件,否则为第一个。 ┃ ┃ │ │■*函数名:调用文件中的该函数并退出。 ┃ ┃ │ │■|目录:如果目录为纯数字,需要用用一对"或',或换为“:目录”的形式. ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│LOAD \外置程序\PECMD.INI A B 或 LOAD #102 A B 或 LOAD "X:\Program Files\a.ini" "1 x" 2 ┃ ┃ │ │LOAD --mem &MyStript A B C 对文件名#123, LOAD #123 p1 要写成 LOAD .\#123 p1 ┃ ┃LOAD├──┼──────────────────────────────────────────────┨ ┃ │备注│※每条命令单独一行,主流程的命令是完全按顺序执行的。不正确的命令或空行将忽略不计。 ┃ ┃ │ │※配置文件支持整行和行后注释,整行注释可以用"//"(建议)或";"或"`",行后注释是" //"或";"或"`" ┃ ┃ │ │※在配置文件中可以使用环境变量"%CurDir%"表示当前目录,"%CurDrv%"表示当前盘符。 ┃ ┃ │ │※如果文件路径第1个非"字符是"\",则搜索所有磁盘指定目录中的文件,如"LOAD \MyWinPE\PECMD.INI"┃ ┃ │ │※配置文件所在目录被设置为当前目录,这样创建快捷方式时,快捷方式目标路径可以使用相对路径。 ┃ ┃ │ │※其它的参照MAIN命令的说明。偏移[+长度限制]使得可以运行非文件系统(设备或片段)及合并脚本 ┃ ┃ │ │※LOAD 支持文件编码字符集指定。CMPS压缩前:有BOM的以BOM为准;否则在第一行用#code=字符集数字 ┃ ┃ │ │ 指定;如果第一行为#!开始,则放在第二行。BOM有UNICODE UNICODEBE UTF8。 ┃ ┃ │ │※友好型:指定友好别名为%0,而不是含#的资源名。 脚本ID资源的目录默认为SCRIPT。 ┃ ┃ │ │※文件路径或某一参数如果含有空字符,需要双引号括起来。否则会被分断。 ┃ ┃ │ │※LOAD没有省略时,第一个字面上连续串当作文件名无论是否含有空字符变量,对应双引号可省。(兼容)┃ ┃ │ │☆书写命令标准请使用 windows、LINUX 的命令行标准,这是也是 LOAD 命令的标准写法。 ┃ ┃ │ │☆为避免 文件名 和后面 #脚本ID 混淆,可用引号括起来,此时可以为非数字 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'LOCK' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│LOCK [--exist|--try[*]] [-backlevel:][#[#]]锁1的名字 锁2 锁3 ... [,返回名] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在本函数堆栈上申请多个自动精灵锁。一并锁定/释放。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃LOCK│参数│■锁的名字: 普通字母数字汉字串。#表示进程之间进程锁;##表示终端服务系统锁,不同终端之间;否 ┃ ┃ │ │ 则为进程内部的线程锁。不区分大小写。一般不同登录用户可用#%USERNAME%#subname; ┃ ┃ │ │ 可以用GUID,如{5ACCA58C-8EAB-410E-9263-C5ADAD0D8F9B} 。 ┃ ┃ │ │■backlevel:为一正数,默认为0。表示退出时不销毁,而是减1,并上移一级。用于子函数创建锁。实际 ┃ ┃ │ │ 按从头到此的最小数计算的。 ┃ ┃ │ │ --exist :检测是否有这个锁,0=无 1=有 -1=失败。主要用来防止多次。 ┃ ┃ │ │ --try :尝试锁住。 0=成功锁住 1=未锁住。 在已锁住时可以--try* 空锁操作。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│LOCK 售火车票 查询火车票 或 LOCK --exist #售火车票系统 或 LOCK .thread 或 LOCK .ole ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※程序员不用解锁。函数返回或窗口销毁或退出代码块时自动解锁。多锁一起锁不易互锁。可以重复加锁┃ ┃ │ │ 。好的书写习惯是放在函数的最开始,或紧接在{后同一行。 .thread为多线程同步;.ole 为OLE同步 ┃ ┃ │ │ 约定: #pecmd 为共同瞬间锁, 将一组操作原子化。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'LOGO' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│LOGO [-] [-enable] [-wait] [-trans:透明度] [文件路径][,颜色] ┃ ┃ │ │LOGO [-] [-enable] [-top] [-trans:N] --[,透明颜色] //为TEXT命令准备一块画布,默认背景色 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置或关闭登录画面。-为快速退出,无渐变。-top为置顶。-enable ESC按键退出.-wait 等待动画结束 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│※文件路径为图片文件名(含路径),支持BMP/JPG/PNG/GIF等各式(需要GDI+支持)。 ┃ ┃ │ │※颜色为背景颜色,支持16进制数值。当同时设置了LOGO图和背景颜色时优先显示LOGO图。 ┃ ┃ │ │※若LOGO图无效,将使用背景颜色;若设置的背景颜色无效将使用注册表内定的背景颜色。 ┃ ┃ │ │※若无参数,则关闭启动画面(渐隐淡出)。 透明度:0-255 //不要用透明色写字 ┃ ┃LOGO├──┼──────────────────────────────────────────────┨ ┃ │示例│LOGO %SystemRoot%\XCMD.JPG ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※此命令为非阻塞模式执行。执行本命令后,将立即执行下一条命令。因此,如果在命令行中使用,需要┃ ┃ │ │ WAIT,否则程序马上退出,将不能看到效果。 ┃ ┃ │ │※此命令可多次使用。如果你愿意的话,启动过程共可以更换多个不同的图片。 ┃ ┃ │ │※配置文件结束之前,必须调用一次不带参数的"LOGO"命令,以关闭启动画面。 ┃ ┃ │ │※使用LOGO图要求的LOGO内存会大些。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'LOGS' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│LOGS [--thread[@+]] [--lock:锁码 --RAW=0/1 --ON=0/1 --p[-]] [--2[-]] [--t=0/1] [--ln=1/0] ┃ ┃ │ │ [--rt=1/0] [--a] [--abak] [--tmp] [--vol[+]] [--part] [--rt[?]] [[*?文件路径][,数值]] ┃ ┃ │ │LOGS * //立即刷到磁盘,不关闭LOG,并释放内存 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│启用日志以便记录每条命令的执行结果,帮助用户验证配置文件的正确性。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│※文件路径: 指日志文件名,含路径。--rt或*为实时模式,立即刷到磁盘。--rt=1/0设置实时模式。 ┃ ┃ │ │ --p为执行前打印;--2为前后都打印,后缀-为取消,--t=打印时间线程 --a继续追加LOG --ln行号 ┃ ┃ │ │ --np[-]禁止"执行前自动LOG" --ON=开关(局部) --RAW=原始(局部) --rt?恢复模式(无文件名仅关闭) ┃ ┃ │ │ --abak子LOGS超出范围是自动恢复本LOGS --tmp本LOGS超出范围是自动恢复原来 锁码:校验 ┃ ┃ │ │ --part &__LOGS为\\?\\Harddisk#Partition# --vol &__LOGS为volume格式 --vol+两者 ┃ ┃ │ │ --thread 本线程LOGS @:公共 3:两者都 关闭时且没后缀:关闭两者 ┃ ┃ │ │ LOGS --ln=0/1 LOGS --np[-] 可用 ENVI^ logs_ln=0/1 ENVI^ logs_np=0/1 ┃ ┃LOGS│ │※数值: 实际不限,日志记录多,所需磁盘空间也大。命令以@引导则不写入LOG。*?等于--rt --rt? ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│LOGS X:\PECMD.LOG 或 LOGS * CONOUT$ //调试终端 LOGS --a --rt --rt? %&OldLOGS% //恢复LOG ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※配置文件结束之前,必须调用一次不带参数的"LOGS"命令,以关闭日志文件,程序退出是自动执行。 ┃ ┃ │ │※此命令不能在命令行中使用(必须在配置文件中使用)。 ┃ ┃ │ │※公开发布的 WinPE 中建议不要启用日志文件。仅用于调试。 消息处理中受到限制。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'LOOP' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│LOOP <循环条件>,[!]<循环命令> ┃ ┃ │格式│LOOP {! }{$#}[{! }<条件1> 关系运算符 {! }<条件2> ...],{!}<循环命令> //组合条件 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│测试循环条件,执行循环命令。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■循环条件: 格式为[$#]变量1[<比较符>变量2]。前导符'$'为字符串比较(不分大小写);或'左部'<比较 ┃ ┃ │ │ 符>'右部';前导符'#'为整数INT64比较;前导省略或前导|表示进行Double变量比较。 ┃ ┃ │ │※比较符 比较操作符"<"、">"、"="、"!"、">="、 "<="、"!="、"<>"分别表示:小于、大于、等于、┃ ┃ │ │ 不等于、大于等于、小于等于、不等于、不等于。 ┃ ┃LOOP│ │■循环命令: 前导符'!'表示条件先取反。循环执行该命令,直至循环条件成立 ┃ ┃ │ │※组合条件: []为标志,可嵌套()。[前的$#表示后面默认为此。关系运算|&@。需要空格间隔 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│LOOP #%Number%<100,CALL DoLoop 或 LOOP $%Characters1%=%Characters2%,!CALL DoLoop ┃ ┃ │ │LOOP [ 条件1 & ! 条件2 & 条件3 ], 做某事 //组合范例 ┃ ┃ │ │LOOP [ #2 < 12 & $7 < 8 & 4 < 10 ], MESS LOOP1 //组合范例 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※循环命令内必须存在修改变量的命令,否则循环不会结束(形成死循环);循环体建议放在_SUB 与 _END┃ ┃ │ │ 定义的语句中; ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'LPOS' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│LPOS[*] [*] [-case] [[* [*]][~]变量名][,[~]行名]=字符,数值,字符串 //前缀*返回多个位置 ┃ ┃ │ │LPOS**[*][#$] [-qu] [-delims:分割符] [-case] [[~]变量名][,[~]行名]=子字符串,数值,字符串 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│返回指定"字符"在"字符串"左边起出现的位置。 *则后面[字符]是变量名 ~则从右计算位置 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■变量名: 用于保存命令结果的变量名;-case为大小写匹配。 ┃ ┃ │ │■字符串: 被检测的字符串;可以任意字符,空格 ┃ ┃LPOS│ │■字 符: 被检测的字符,不区分大小写;可以任意字符,空格。有多个字符作子串模式。为,须紧贴= ┃ ┃ │ │■数 值: 指定被检测的字符出现的次数。默认为1. ┃ ┃ │ │■LPOS*: 表示查找的是子串。即“=”和“,”间的部分;可以是任意字符与空格。 ┃ ┃ │ │■LPOS**: 表示查找的是子串,返回空字符分割的字串编号。 数值>=1 ┃ ┃ │ │ ***或-qu 兼容MSTR。$仅空格 #仅TAB,或-delims:指定分隔符(支持\n\r\t\v\f\b)。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│LPOS iPos=a,2,123A56|1234A6|abcdef 或 LPOS iPos=a,3,123A56|1234A6|abcdef ┃ ┃ │ │LPOS*** &&P2="BB FF 199",,AA "BB FF 199" DD ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※当"数值"小于1时返回最右边被检测字符的位置,如上例的结果是15;返回结果为0时表示没有找到。 ┃ ┃ │ │※该命令按 Unicode 字符串处理,示例1的返回值为12,示例2的返回值为15(与数值为0的结果相同)。 ┃ ┃ │ │※子串第2字符起不能为“,”;但第1字符和字符方式可以。可变量传入。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'LSTR' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│LSTR [*] <变量名><=><数目>,<字符串> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│从指定"字符串"的左边截取指定数目的字符,并将结果返回给指定名称的变量。*则后面是变量名 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■变量名: 用于保存命令结果的变量名; ┃ ┃LSTR│ │■字符串: 源字符串,长度不限; ┃ ┃ │ │■数 目: 指定截取字符的数目。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│LSTR aStr=2,1234567890 或 LSTR aStr=5,1234567890 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※当"数值"小于1时或超出源字符串的长度时,返回结果为整个源字符串(相当于字符串复制); ┃ ┃ │ │※该命令按 Unicode 字符串处理,示例1的返回值为"12",示例2的返回值为"12345"。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'MAIN' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│MAIN[*] [--user] [--wait] [文件路径|TEAM或EXEC开始的命令] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│初始化桌面,接管 Ctrl+Alt+Del,并创建新进程执行 LOAD 功能。 --user为用户级 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■指定初始化的配置文件路径。*表示立即隐藏守护进程。如指定文件不存在而#102脚本非空,用#102 ┃ ┃MAIN├──┼──────────────────────────────────────────────┨ ┃ │示例│MAIN %SystemRoot%\System32\PECMD.INI ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※MAIN命令创建LOAD进程,执行完LOAD功能后会驻留内存,安装盘键钩子,挂接"ExitWindowsEx"函数。 ┃ ┃ │ │※建议不要用PELOGON.EXE,直接用PECMD MAIN。 ┃ ┃ │ │※LAOD命令完成LOAD文件的功能后会自行退出内存,其它的参照LOAD命令的说明。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'MDIR' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│MDIR 目录名 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│■建立指定的目录。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃MDIR│参数│目录名称。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│MDIR %TEMP% ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※MDIR命令能建立多级目录,支持带环境变量的目录名。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'MEMO' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│MEMO[-|+.] [-right] [-center] [-vcenter] [-rich] [*] ┃ ┃ │ │ <编辑框名称>,<编辑框形状>[,编辑框内容][,目标文件名][,编辑框类型][,编辑框颜色][,字体] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在_SUB定义的窗口内建立一个多行文本编辑框。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■-表示无水平滚动条,|表示无垂直滚动条,+表示无边框,.表示不转换\n否则转换。注意以上参数必须┃ ┃ │ │ 紧跟命令后面,不能有空格!也无顺序之分。 ┃ ┃ │ │ 文本默认左对齐,-right 右对齐,-center 居中,-rich 可设置颜色。-u2d unix2dos ┃ ┃ │ │ <编辑框名称>前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │ │■编辑框名称: 字串,编辑框名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■编辑框形状: 编辑框位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■编辑框内容: 初始化编辑框时填入的内容,支持多行文字,\n或原生换行。逗号可用变量。 ┃ ┃ │ │■目标文件名: 指定文本文件名,多行文本编辑框的内容由该文件载入。指定内容时忽略。 ┃ ┃ │ │■编辑框类型: 数字(累加),默认省略或为0,表示可编辑的多行文本编辑框,“-”负号为灰色禁用, ┃ ┃ │ │ 0x8位只读,0x10位不可见,0x20位可编辑并支持自动换行,0x40位跳到末尾;0x100接受┃ ┃ │ │ 一个拖入文件名;0x200接受所有拖入文件名,多行;0x400数字。(为兼容)1-15=只读 ┃ ┃MEMO│ │■编辑框颜色: 字体: 见EDIT ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│MEMO Memo1,L304T268W280H88,,%CurDir%\Readme.TXT,0 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※MEMO命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※[编辑框内容]不为空时将忽略[目标文件名],当[编辑框内容]为空时将加载[目标文件名]指定的内容,┃ ┃ │ │ 超长的"编辑框内容"可以通过环境变量赋值来连接成一个新的字符串变量,方便在记事本中阅读。 ┃ ┃ │ │※"ENVI @编辑框名称.Enable=[#]数值",0为禁用状态;1为可用状态(不响应)。#用于子线程 ┃ ┃ │ │※可用"ENVI @编辑框名称.ReadOnly=数值"来设置编辑框的只读状态;0为非只读状态,非0为只读状态。┃ ┃ │ │※前景颜色和背景颜色支持C格式的16进制数值,如 0xFFFFFF。 ┃ ┃ │ │※可用"ENVI @编辑框名称.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※可用"ENVI @编辑框名称.LINE=数值"来使某行可见。详细参见 EDIT 控件命令。 ┃ ┃ │ │※可用"ENVI @编辑框名称.Color=..."来设置颜色、字体。见EDIT ┃ ┃ │ │※可用"ENVI @控件名称.*del="来删除。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │范例│◎如何将编辑框之中的修改后的内容作为一个新变量来赋值使用? ┃ ┃ │ │A:%编辑框名% 如: ┃ ┃ │ │ENVI$ &&NL=0d 0a ┃ ┃ │ │ EDIT| EDIT2,L36T25W187H49,EDIT2,,0x24 ┃ ┃ │ │ MEMO MEMO1,L38T81W182H77,MEMO1,, ┃ ┃ │ │MESS. EDIT2【%EDIT2%】 %&NL% MEMO1【%MEMO1%】@#OK ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'MENU' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│MENU [-bar] [-sub] <菜单项名称>,[菜单项标题],[菜单项事件],[菜单项状态][,BMP] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│向自定义的托盘图标菜单添加一项菜单。 ┃ ┃ │ │-bar:窗口菜单(第一个MENU命令要) -sub:后面是一个子菜单(_SUB) ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■菜单项名称: 字符串,除分隔线外,菜单项名称应是唯一的,不能与其它控件或环境变量的名称同名,┃ ┃ │ │ 当菜单项名称或菜单项名称的第一个字符为"-"时表示分隔线,否则表示正常菜单。 ┃ ┃ │ │■菜单项标题: 菜单项上的文字,用于描述菜单项的功能或说明。 ┃ ┃ │ │■菜单项事件: 点击该菜单项时执行的命令,必须是 PECMD 支持的有效命令。为***表示退出托盘图标 ┃ ┃MENU│ │■菜单项状态: 默认为0,表示正常可用菜单,带-号或±1为灰色禁用菜单。2:分隔线 4:打钩 8:隐藏 ┃ ┃ │ │ 0x20:分列 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│MENU Menu2,分辨率1024X768 颜色32位 刷新率85,DISP W1024H768B32F85 或 MENU - ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※MENU命令可以位于_SUB命令和_END命令之外。 ┃ ┃ │ │※托盘图标菜单的图标由 _SUB 命令定义的窗口图标来决定,省略时采用 PECMD 的主图标。 ┃ ┃ │ │※通过环境变量 %菜单项名称% 来引用菜单项标题. 还有%菜单项名称.Enable% ┃ ┃ │ │※用"ENVI @菜单项名称=新标题" 来设置修改菜单项标题。 ┃ ┃ │ │※可用"ENVI @菜单项名称.Enable=数值"来设置编辑框的可用状态;0为不可用状态1为可用状态。 ┃ ┃ │ │※可用"ENVI @菜单项名称.ID=?[hmenu][;控件ID名][;菜单序号]"查询ID名等。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'MESS' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│MESS[-*=.-svr-svr2-max-min-size-close-top-icon[-x:x][-y:y][*]数字][-sub:LxTy:对象名] ┃ ┃ │ │ [文字内容][@消息窗文字标题][#消息窗类型[*自动关闭的时间(毫秒)][$默认的选择]] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│显示一个[是/否]选择消息窗或显示一个带[确定]按钮的消息窗口。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■消息窗文字内容: 支持多行文字,文字行间用“\n”断开或原始的多行文本,允许任何字符;保留MESS┃ ┃ │ │ 后的空字符。MESS后的“.”或-raw表示不转换“\n”。特殊字符可用变量传入。-svr或-svr2登录前可┃ ┃ │ │ 显示窗口。+max带最大化,+min带最小化,+size可调大小+close没有关闭小按钮。+top最顶端 -x/y:┃ ┃ │ │ 为位置。insvr:服务中显示到用户桌面。+txt静态文本 +cb拷贝到剪切板 +var文本是变量名 ┃ ┃ │ │■消息窗文字标题: 除@之外任何单行文本,保留空字符。特殊字符可用变量传入(%老鼠%)。 ┃ ┃MESS│ │■消息窗类型: 目前支持"YN"、"OK"、“YNC"、"OKC"、"RETRY"、"ABORT"6种类信息。默认OK ┃ ┃ │ │■自动关闭的时间设置为0或不设置时,消息窗口不会自动关闭。默认的选择用Y或N表示,如$Y、$N、$C ┃ ┃ │ │ 、$1($O)、$O、$2($C)、$3($A)、$A、$4($R)、$R、$5($I)、$I、$6($Y)、$7($N)。负数不显示计数 ┃ ┃ │ │■MESS-bin或"MESS*"表示并行调用。父窗口可以同时操作。关闭前不能执行下一命令。 ┃ ┃ │ │■MESS-bg或MESS-表示后台调用。继续执行下面的命令。但某些费时的操作还是会阻塞。 ┃ ┃ │ │■MESS-tbin或"MESS~"表示后台调用。继续执行下面的命令。某些费时的操作也不会阻塞。可用于调试 ┃ ┃ │ │■"MESS="表示阻塞调用,整个消息循环都被阻塞。(可用于特殊调试) ┃ ┃ │ │■"MESS"表示阻塞调用,但不阻塞整个消息循环。 ┃ ┃ │ │■+icon后的数字:0-7。无数字无图标,0惊叹/1警告,2信息/3星号,4问题,5停止/6错误/7招手停。 ┃ ┃ │ │ >=32或前带*为自定义,对应IconGroup号,可自加icon,102为绿对钩。也可+icon**DLLEXE文件#编号。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│MESS 发现物理内存不足,\n是否设置虚拟内存?@设置虚拟内存 #YN *10000 $N ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※用户对消息窗的选择结果保存在变量 %YESNO% %&YESNO%中,当选择[是]时,变量的值为YES, ┃ ┃ │ │ 选择[否]时这一变量值为NO,当窗口超时关闭返回默认选择,可用FIND命令判断这一环境变量的值。 ┃ ┃ │ │ 其它返回值:OK、CANCEL、RETRY、IGNORE、ABORT。 ┃ ┃ │ │※"YN"类型消息窗省略默认的选择参数时自动关闭的返回值为NO。为便于调试,所有参数都可省略 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'MOUN' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│MOUN[-svr] [-u] [!][Wim路径],,[映像ID],[Wim临时目录] //-u:支持按WIM名卸载 ┃ ┃ │格式│MOUN -query 变量名[=rw][,Mount目标目录][,Wim路径] ┃ ┃ │格式│MOUN-udm 【sync】 [-ud|-uh|-muh[g]] [-u+] [-udfs] [-udm-] [-w] [-m] [-mall] [-mhide[1]] ┃ ┃ │ │ [-findboot[Only][: 返名2]] [-CurDrv[R][+]] [-onlys] [-ud[m]id: UDx编号] [-udmask: 掩码] ┃ ┃ │ │ [-udimg: 文件] [-check[-]] [-ret: 返名] [-mh: ] [-mw[-]] [-mnorhide] ┃ ┃ │ │ [-opt[s]: imdisk参数] [-CheckFile: 标志文件] 设备名 [盘符表] ┃ ┃ │ │MOUN-udm upud -ret: &&V -udmask: 属性 设备名 UD文件名 偏移(字节) 长度(字节,可>4G) ┃ ┃ │ │MOUN-udm listudm -ret: 返名 [-norm[-]] [-udfs [-udmask: 掩码]] [-u+[pre]] [-vhd] ┃ ┃ │ │ 设备名 [UD通配符] ┃ ┃ │ │MOUN-udm listud -ret: 返名 [-udmask: flag掩码] 设备名 [多个通配符] //返回详细UD文件列表 ┃ ┃ │ │MOUN-udm findboot -ret: 返名 //查找启动设备,返回:磁盘号 UDM号 类型 原始信息 ┃ ┃ │ │MOUN-udm findudm [-img] [-norm] -ret: 返名 盘符 //查找对应的UDM,返回:磁盘号 UDM号 盘符 类型┃ ┃ │ │MOUN-udm setboot -ret: 返名 启动菜单 [[#udm号]] [类型] [自动加载盘符] ┃ ┃ │ │MOUN-udm ud2fs [-efi] 设备名 [bClr=1] [bMkNew=1] [FS=FAT] [sz1:sz2...[:*]] //UD扩展区转FS┃ ┃ │ │MOUN-udm mapsub [-check] [-CheckFile[+]:Fn] [-tag[+]:Fn] [-ret:返名] [-r] 文件名 盘符 ┃ ┃ │ │ //只读UDm盘的文件可写加载 ┃ ┃ │ │MOUN-vhd [-c[x] -d -u -r -s:扇区大小] VHD路径,[Mount目标目录|大小|父VHD],[ID],[返回名][,PE ┃ ┃ │ │ //变量] -c[x]创建VHDX] -r只读 -d动态 PE变量:私有加载,超出变量范围或终止自卸 -iso:ISO ┃ ┃ │ │MOUN-vhd -query [-r] VHD路径,收发区PE名[,返回字节数名][,命令]//GET_VIRTUAL_DISK_INFO 8B命令 ┃ ┃ │ │MOUN-udm OnlyApp [-noauto] //检测并执行一键恢复等单一程序 ┃ ┃ │ │MOUN-udm SetOnlyApp <[-reboot] [-desc:注释] -udm:磁盘号 -bioscmd:bios启动命令" ┃ ┃ │ │ "-eficmd:efi启动命令"-efimenu:EFI菜单 -biosmenu:BIOS菜单]|启动菜单> 类型 功能 APP AppDsk ┃ ┃ │ │ AppPt bShutdown OpDisk OpPt pt_sn SrcDsk SrcPt SrcPath [WimName FSType FSLable PBR ┃ ┃ │ │ BootDsk BootPt grldr WimZx0 HvDesc] ┃ ┃ │ │MOUN-udm setbootcfg 启动菜单 "值" ["标签头"] ┃ ┃ │ │MOUN-udm getbootcfg [-x[+|a]] 返回名 标签头 //-x[+|a]可[仅|全部]用动态配置 ┃ ┃ │ │MOUN-udm Server [-FreshDriver[+|Only] -quit|-tips- -qfree[a|-] -safe -replace] //UDM自挂器┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│将WIM文件中的某个映像挂载到指定的目录中或卸下已经挂载上的映像文件。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■Wim文件名 : Microsoft Windows Imaging Format (WIM) 映像格式的文件。 ┃ ┃ │ │■Mount目标目录 : 将WIM映像挂载到的目录。 ┃ ┃ │ │■Wim文件的映像ID : WIM文件中的映像ID,用数值表示。只读挂载映像时,映像ID为 1 时可省略。 ┃ ┃ │ │■Wim临时目录 : 当设置WimFltr临时工作目录时表示RW方式挂载,这个目录建议设置到硬盘。*为系统 ┃ ┃ │ │ 临时目录 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │■-query 查询模式 变量名:返回结果 -u为卸载 MOUN-svr:非PE注销后WIM还有效 ┃ ┃ │ │■=rw: 只返回RW标志(1/0) ┃ ┃MOUN│ │■Mount目标目录: 查询的目录。无则全部(多行串)。 ┃ ┃ │ │■-dll WIMDLL路径: ┃ ┃ │ │■-onlys:忽略分区表只软加载。-mhide:加载windows不认的分区。-mall:加载全部UDM分区 -m可多次 ┃ ┃ │ │ -ud或-u:软卸载 -uh:卸载分区表的盘符 -muh:先-uh再加载,智能(g强制)卸载软光盘 -u+支持U+ ┃ ┃ │ │ -cleartmp[only]:清除EFI临时分区项 -udfs支持UD -udm listudm -ret 返名 设备名为列出UDm分区┃ ┃ │ │ -udm sync "盘符列表" //刷新数据到存储体 -udm-:不操作UDM 掩码可为* -mh:分区表法 ┃ ┃ │ │ -udimg: 可多次 flag掩码:0x20000:UD扩展区 0x40000仅UD扩展区 0x80000:检查UD扩展区 ┃ ┃ │ │ -mhide1: 配合 -u+ -udfs "无-udm-" 才有效 -ainf:分区表缓冲变量名 -nbrd[-]:不广播[广播]盘符┃ ┃ │ │ -opt[s]:可用多次 -opts:会脱引号 【-tag: 标志文件名】(可多次)。没有标志文件则不挂。 ┃ ┃ │ │ -ainf: varname: 分区表缓存区,加速。 -mnorhide:普通隐藏分区也加载 ┃ ┃ │ │ -nbrd: 不广播分区加载,加速。 ┃ ┃ │ │ -opt: 1个参数 -opts: "多个参数",可以多次。 ┃ ┃ │ │ -CheckFile: 标志文件,可以多次。有其中一个标志文件才挂载、列出。 ┃ ┃ │ │ -CheckFile+: 标志文件,可以多次。全部标志文件都存在才挂载、列出。 ┃ ┃ │ │ -CheckVol[R]: 卷标,可以多次。匹配一个才挂载、列出。 R则为正则表达式 ┃ ┃ │ │ -CheckUuid[R]: UUID,可以多次。匹配一个才挂载、列出。 R则为正则表达式 ┃ ┃ │ │ -CheckPtType: 类型,可以多次。匹配一个才挂载、列出。 ┃ ┃ │ │ -tag: 标志文件,可以多次。有其中一个标志文件才挂载。 ┃ ┃ │ │ -tag+: 标志文件,可以多次。全部标志文件都存在才挂载。 ┃ ┃ │ │ -check[-]: 只挂载有效文件系统[禁止] ┃ ┃ │ │ -udmid: pt#物理分区号 软挂载分区默认只读 ┃ ┃ │ │ -udmdev:"类型标识:设备标识:UDM号": 指定挂载启动设备和UDM,否则不挂。类型标识为devid则后面 ┃ ┃ │ │ 为磁盘devid;类型标识为devsg则后面为磁盘签名 -check:不挂载无效文件系统 ┃ ┃ │ │ 类型(setboot、findboot、findudm功能): udm ud u+ pt(普通分区) udm号可为分区号/ud文件 ┃ ┃ │ │ -vhd: 校正VHD分区 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│MOUN %CurDrv%\外置程序\PROGRAMS.WIM,%ProgramFiles%,1 MOUN -udfs -udm- \\.\PhysicalDrive1 R-┃ ┃ │ │MOUN *query RW=rw,D:\Y 或 MOUN *query MSG1,D:\Y 或 MOUN *query ALL ┃ ┃ │ │MOUN-udm -mhide \\.\PhysicalDrive* R- 或MOUN-udm -u \\.\PhysicalDrive1 或MOUN-udm -u "" R┃ ┃ │ │MOUN-udfs -udm- -mall -udimg: *.img -udimg: *.iso -udmask: 0xA0001 \\.\PhysicalDrive1 R- ┃ ┃ │ │MOUN-udfs -udm- -udmask: 0x60000 \\.\PhysicalDrive1 R- //仅UD扩展区 ┃ ┃ │ │MOUN-udm -mall -mhide1 \\.\PhysicalDrive%&hd% R- //仅UDm ┃ ┃ │ │MOUN-udm -udm- -u+ -mall -mhide1 \\.\PhysicalDrive%&hd% R- //仅U+ ┃ ┃ │ │MOUN-udm -udm- -mall -mhide1 -udfs -udimg: EFI*.IMG \\.\PhysicalDrive1 R- //仅UD ┃ ┃ │ │MOUN-vhd -c D:\A3.VHD,20M MOUN -vhd D:\A3.VHD,B: ┃ ┃ │ │MOUN-udm SetOnlyApp -reboot -udm:1 "-bioscmd:chainloader /WAIPE/PEXPWIM.BIN" ┃ ┃ │ │ "-eficmd:chainloader /EFI/boot/boot${arch0}.efi" "-desc:你好" -biosmenu:/WAIPE/PEW ┃ ┃ │ │ -efimenu:/EFI/microsoft/boot/bcd GHO 1 ?:\ZhiMaKaiMen_ZDHuiFu.NTR ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※文件目录名支持环境变量解释;使用 FBWF 命令时,FBWF 命令须在 MOUN 命令后。 ┃ ┃ │ │※路径以"\"开始,则搜索所有盘符和分区(含隐藏分区)指定目录的文件,如: MOUN \MyPE\OP.WIM,%PF%,1┃ ┃ │ │※前导"!"表示成功挂载隐藏分区中的WIM后,给隐藏分区分配盘符,如: MOUN !\MyPE\OP.WIM,%PF%,1 ┃ ┃ │ │※省略Wim路径为卸下映像,映像ID为非0表示卸载映像时保存修改内容,为0表示不保存修改内容。 ┃ ┃ │ │※完整查询结果 ID FLAG "WIM文件" "加载目录" , FLAG中 0x100位为RW。 ┃ ┃ │ │※Mount目标目录自动创建,加载只读文件自动转为只读方式。 ┃ ┃ │ │※内置IMDISK需要cabinet.DLL。 ┃ ┃ │ │※自动加载盘符可放在HKLM\SOFTWARE\PELOGON\USRCFG\AutoUDmMount.DriverTo,PECMD.INI开始可设 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'MSTR' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│MSTR [*] 变量名=位置,长度,字符串 ┃ ┃ │ 2 │MSTR[*$] [*] [-xq] [-left] 变量名1,变量名2...,变量名n=<[~]串号1[-]>...<[~]串号n[-]>字符串 ┃ ┃ │ 3 │MSTR[*$] [*] [-xq] [-left] 变量名1,变量名2...,变量名n=<[~]串号1*>字符串 ┃ ┃ │ 4 │MSTR[*$] [*] [-rq[1]] [-trim[p][left|right]] 变量名=字符串 //去掉[前置]前后的空字符 $仅空格 ┃ ┃ │ │*仅TAB -delims:UNICODE分割符 指定特别的分割符 -xq串内可含\" -rq脱"" -rq1含单个" ┃ ┃ │ │-term 留分割符 串号#返回总串数 -1 如果含空格,-trim -trimleft -trimright -rq -rq1 加引号 ┃ ┃ │ │-trim*+[+] -rq*+[+] 则为[后]附加操作 -trimp预先处理 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│从指定"字符串"的指定位置向右截取指定长度的字符,并将结果返回给指定名称的变量.*则后面是变量名┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■变量名: 用于保存命令结果的变量名; ┃ ┃ │ │■字符串: 源字符串,长度不限; ┃ ┃MSTR│ │■位 置: 数值,指定源字符串的起始位置; ┃ ┃ │ │■长 度: 数值,指定截取的长度。 ┃ ┃ │ │■字串号: 数值>=1,返回第几个字串。字串由空格或"确定。一对<>必须输入。有~则去掉最外的一对"。┃ ┃ │ │ MSTR后的*以TAB键为分段;$以连续的空格为分段。-left:保留字符串最开始的空字符(TAB方式默认)。┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│MSTR aStr=2,4,1234567890 或 MSTR aStr=<~2>1 "a b c" 3 或 MSTR aStr=-2,4,1234567890 ┃ ┃ │ │MSTR a,b,c,d=<4><3><5><2>1111 222 333 444 555 666 ┃ ┃ │ │MSTR a,b,c,d=<2*>1111 222 333 444 555 666 或 MSTR a=<1>"PROG \"%L%\" " 1234 ┃ ┃ │ │MSTR V_3=<-3>5555 66 uuty 00 pp ww //00 ┃ ┃ │ │MSTR Q1,Q5,Q6,Q6x=<1><5-><6><6->%vSTR% MSTR Q1,Q5,Q6=<1-><5-><6>%vSTR% //混合 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │相关:LAMBDA 也将 参数 分段 //范例的LAMBDA代码模式 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │[]5555 66 uuty 00 pp ww{ ENVI &V3=%3} ┃ ┃ │ │[]5555 66 uuty 00 pp ww{ TEAM ENVI &V3=%3| } ///4, }前可以有空字符,|为 &V3终止 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │相关:_SUB 函数 也将 参数 分段 //范例的_SUB代码模式 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │_SUB GETV3 ┃ ┃ │ │ ENVI &V3=%3 ┃ ┃ │ │_END ┃ ┃ │ │GETV3 5555 66 uuty 00 pp ww ///uuty ┃ ┃ │ │MESS V3=[%&V3%]@#OK ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※当"位置"<0从尾部开始反向处理;"长度"<=0则 实际长度 = 实际剩余总长度 - 该数的绝对值 ┃ ┃ │ │※当"位置"=0时作1处理,当"长度"小于1或超出源字符串长度时,返回起始位置后的所有字符; ┃ ┃ │ │※该命令按 Unicode 字符串处理,示例1的返回值为2345,示例2的返回值为a b c。 ┃ ┃ │ │※格式2按后面的位置表,依次给前面的名字表赋值。 ┃ ┃ │ │※格式3为格式2的简化形式,获得连续字串号列表。 ┃ ┃ │ │※格式4为从字串号开始的所有部分。 ┃ ┃ │ │※格式234也支持反向取词。-1为最后一个。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'NAME' 'FNAM' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│NAME [-ext] <变量名><=><文件名> ┃ ┃ │ │FNAM [-ext] <变量名><=><文件名> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│返回指定文件名的基本名(无目录、无扩展名) ;-ext则保留扩展名。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃FNAM│参数│■变量名: 用于保存主名的变量名称; ┃ ┃NAME│ │■文件名: 合法的文件名称。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│NAME fNam=C:\Windows\System32\calc.exe 或 NAME aExt=X:\Path1\Path2\FileName ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※示例1结果是"calc",示例2返回结果是FileName; ┃ ┃ │ │※FDIR、FDRV、FEXT 的返回值都可以用 FIND 命令检测或比较。 ┃ ┃ │ │※支持 \\?\Harddisk0Partition2\A.TXT \\?\HarddiskVolume5\A.TXT \\?\ImDisk0\A.TXT ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'NTPC' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│NTPC [-q|-qo] [server][,name] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│获取时间,同步时间 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃NTPC│参数│■-q为同步并查询,-qo为仅查询; 结果存到name中。无-q -qo仅同步。服务器server无则默认。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│NTPC -q ,现在时间 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'NUMK' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│NUMK <数值> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│控制小数字键盘的开关状态 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃NUMK│参数│■数值0时为关,1为开 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│NUMK 1 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│原有 SEND 命令可实现相同功能,但不十分准确,当 NUMK 为开时,再发送一次按键反而会关掉。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'PAGE' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│PAGE [*force] <页面文件路径> <初始大小> [最大值] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置页面文件(虚拟内存)。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■指定页面文件的路径,只能用 DOS 8.3 格式的路径,如"C:\PageFile.sys"。 ┃ ┃ │ │ 初始大小和最大值的单位是 MB;当省略最大值时,自动设置 最大值=初始大小。 ┃ ┃PAGE├──┼──────────────────────────────────────────────┨ ┃ │示例│PAGE C:\PAGEFILE.SYS 128 256 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※如果设置了页面文件,则该分区将无法执行格式化等操作。 ┃ ┃ │ │※当可用内存>初始大小时,本命令将不设置页文件,即可以定义初始大小来作为设置页文件的条件。 ┃ ┃ │ │※该命令有智能化功能,即从你定义的页面文件名(含盘符)所在的分区起开始搜索符合条件(硬盘和容量)┃ ┃ │ │ 分区来设置页文件,避开速度慢的U盘和移动硬盘。以U盘或移动硬盘启动时,可能配置文件定义的页文┃ ┃ │ │ 件就在U盘或移动硬盘。经一轮搜索若没有找到符合条件的硬盘分区设置页文件才利用U盘或移动硬盘来┃ ┃ │ │ 设置页文件。 *force禁止备注2备注3。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'PART' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│PART [-gui][-usb][-fs][-up] [-admin] [-super] [-align[=..]] [-alignend[=..]] [-clear] [-raw]┃ ┃ │ │ [-swap:id] [-CHS=C:H:S] [del/init] [-img=[*偏移*长度*]文件名|磁盘]#分区 [a|-a] type ┃ ┃ │ │ [[-]start [len]] ┃ ┃ │格式│PART -gpt [-up] [-admin] [-super] [-align[=..]] [-alignend[=..]] [-clear] [-raw] [-cmp] ┃ ┃ │ │ [del/init] [磁盘]#[+]分区 -|typeguid -|start -|len|@结尾扇区地址 guid -|属性 -|名字┃ ┃ │ │PART update [磁盘] ┃ ┃ │ │PART [-ahup] hupdate[f] [磁盘] //刷新磁盘 f:强力模式(磁盘号重排) ┃ ┃ │ │PART [-devid[x]] list [磁盘],变量名 //-devid返回磁盘DevID,-devidx则物┃ ┃ │ │ 理序列号 ┃ ┃ │ │PART [-hextp] [-phy] [-phy#] [-fill] list part [磁盘[#分区]],变量名 ┃ ┃ │ │PART [-hextp] [-fill] [-cdrom] list drv 盘符,变量名 ┃ ┃ │ │PART -raw list drv 盘符,变量名 //设备号 分区号 盘符类型 总线 盘符 媒体类型 ┃ ┃ │ │PART -drv list volume [磁盘:分区|盘符],变量 //列:卷 设备号 分区 设备类型 分区类型 偏移 大小 ┃ ┃ │ │PART [-cdrom|-floppy] list parent <设备号|盘符>,变量名 ┃ ┃ │ │PART [-cdrom] list dep <设备号|盘符>,变量名 //列出源文件名 ┃ ┃ │ │PART /mbr[=nt6|=win|=nt5|=dos|=[*长度限制*]文件名] [-img=文件名|磁盘] ┃ ┃ │ │PART [-phy] /pbr[=nt6[fat]|=win[fat]|=nt5[fat]|=dos|=[*长度限制*]文件名] ┃ ┃ │ │ [-img=文件名|磁盘]#分区 //fat指FAT/FAT32/ExFAT系统 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│创建、删除、修改、隐藏、列表分区。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│◎默认为较安全模式,只能操作一般不用的3、4分区,且不能是扩展分区。 ┃ ┃ │ │ -gui 图形模式。-usb 只列出USB盘。[-report[: 返回名][ 磁盘号]] 显示/输出列表。忽略其他参数┃ ┃ │ │ -mount- 不显示无盘符分区卷标 ┃ ┃ │ │ -admin为高级模式(危险):可以操作1、2分区;-super为超级模式(极其危险):可以操作扩展分区; ┃ ┃ │ │ -align起始对齐,默认柱面对齐,后面可以=64K,=128K,=512K,=1M等;-alignend为尾部对齐,默认对 ┃ ┃ │ │ 齐为-align,后面可以=64K,=128K,=512K,=1M等。 ┃ ┃ │ │ -clear为强制清除分区内有效信息;-raw不对start/len做任何调整;或返回(设备# 分区# 类型 BUS) ┃ ┃ │ │ -up 更新磁盘后分区表更新到OS,-[a]xup加强。-hup:刷新移动磁盘 -ahup:刷新磁盘 -iv=n提取n#项┃ ┃ │ │ -fs 新建的分区不弹出“未格式化”窗口。 ┃ ┃ │ │ C:H:S 依次为每柱面磁头数:每磁头扇区数:扇区大小。 ┃ ┃ │ │ 磁盘: 为hd0至hdN 默认为hd0,类型前导hd可省。 ┃ ┃ │ │ 分区: 1-4。分别指主分区表的4个分区条目物理号,是固定不变,和前面加载用的逻辑号不同。逻辑 ┃ ┃ │ │ 号不固定;分区表分区空着或为扩展分区,则没有号码,无法操作(创建)它;前面一分区变空则 ┃ ┃ │ │ 号码减1。如果分区的位置长度和原来不同,必须先彻底隐藏/删除才能修改。见附录。 ┃ ┃ │ │ +L为扩展分区最后增加一逻辑分区。-L为删除扩展分区最后的逻辑分区。 ┃ ┃ │ │ 分区号为逻辑分区的物理号(>=5),则可以修改其激活、类型、起始、长度。 ┃ ┃ │ │ [a|-a]:a为激活 -a为去激活,否则不变。 ┃ ┃ │ │ type :分区类型 0-255。0表示彻底隐藏。分区软件和OS都看不见。分区重新赋予一个新type即可使用┃ ┃ │ │ <0或无不改变。磁盘、分区、type、起始、长度可为16进制。 ┃ ┃PART│ │ start:在磁盘上的起始位置。磁盘起始字节为0。磁盘为512字节的倍数(内部自动缩小对齐)。 ┃ ┃ │ │ 可为0。<0或无不改变。-表示由list 算出的上一个分区结尾,其对齐调整不影响len。对逻辑分┃ ┃ │ │ 区,可以加+前缀,表示跳过的长度。 ┃ ┃ │ │ len :可为0。<0或无不改变。start_0/len可带单位后缀TGMKS。K为1024字节。S为512字节。 ┃ ┃ │ │ del :彻底删除分区 ┃ ┃ │ │ 彻底删除分区为: PART del [磁盘]#分区 或 PART [磁盘]#分区 -a 0 0 0 ┃ ┃ │ │ init :GPT/MBR分区初始化 ┃ ┃ │ │ fix :修复GPT分区表(校验,标志) ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │[x]update [-axup] [磁盘] 分区表更新到OS。默认为磁盘0。xupdate支持移动磁盘盘符校正 ┃ ┃ │ │hupdate [-ahup] [-up] [磁盘] 分区表硬刷新(U盘)。默认为磁盘0。 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │list disk 没磁盘参数时列出所有磁盘列表,有则返回该磁盘信息 磁盘号 大小 柱面数 磁头数 扇区数 ┃ ┃ │ │ 扇区大小 媒体类型、签名(16进制)、总线类型、分区类型、移动固定磁盘。 ┃ ┃ │ │list part [磁盘] 默认hd0,没有分区参数时列出所有分区列表(-为空,@为扩展分区),有则返回该分区 ┃ ┃ │ │ 信息:分区号 类型 引导标志、起始偏移、大小、隐藏扇区数、结尾、盘符。-hextp 类型为 ┃ ┃ │ │ 16进制0xNN。-phy:分区是物理号,4个主分区1-4,逻辑分区5-N。-phy#:输出物理号 ┃ ┃ │ │ -fill:没有盘符时有占位符* ┃ ┃ │ │ GPT则为: 分区号、类型GUID、GPT、起始偏移、大小、属性、分区GUID ┃ ┃ │ │list drv 盘符基本同list part,只是在命令结果最后增加一个磁盘号。 ┃ ┃ │ │变量名: 返回查询结果。 ┃ ┃ │ ├─────────────────GPT──────────────────────────┨ ┃ │ │默认是 "MS Basic Data"分区,属性0。 分区前的+表示插入模式,原有分区一次后移。物理号1~128 ┃ ┃ │ │-cmp 压缩分区表中空条目(否则DG等不认,但不影响使用) ┃ ┃ │ │属性:0x1000000000000000=只读 0x2000000000000000=影子 0x4000000000000000=隐藏 ┃ ┃ │ │ 0x8000000000000000=无盘符 0x0000000000000001=计算机必须的分区 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │/mbr 重写MBR默认为nt6(win),可以指定文件名,不要太巨大。文件名以#开始为EXEDATA下的资源编号。┃ ┃ │ │ 长度限制为最多读取的文件前部长度。不混淆时第二个*可以省略,如有#的时候。 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │/pbr 重写PBR默认为nt6(win),可以指定文件名,不要太巨大。文件名以#开始为EXEDATA下的资源编号。┃ ┃ │ │ 长度限制为最多读取的文件前部长度。不混淆时第二个*可以省略,如有#的时候。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│PART 1 //修复磁盘1的分区表有效标志。 ┃ ┃ │ │PART 1#3 a //1#3 分区激活 ┃ ┃ │ │PART 1#3 -a //1#3 分区去激活 ┃ ┃ │ │PART 1#3 0x17 104857600 209715200 //100M+200M的分区1#3,隐藏的NTFS ┃ ┃ │ │PART 1#3 0x17 // 隐藏 1#3分区 ┃ ┃ │ │PART 1#3 0x7 // 反隐藏 1#3分区 ┃ ┃ │ │PART 1#3 -a 0 //彻底隐藏,其它分区工具和OS都看不到这个分区 ┃ ┃ │ │PART 1#3 -1 -1 104857600 //调整长度为100M,实际还需事前缩小或事后扩大文件系统大小。例如 ┃ ┃ │ │ 1)原来是100M,现在要缩小到50M:(1)先缩小文件系统大小;(2)part命令缩小分区; ┃ ┃ │ │ 2)原来是50M,现在要扩大到100M:(1)part命令扩大分区; (2)后扩大文件系统大小 ┃ ┃ │ │PART 1#3 -a 0 0 0 //删除分区,不影响分区里面的数据,可以再映射并加载。 ┃ ┃ │ │PART del 1#3 //删除分区,不影响分区里面的数据,可以再映射并加载。 ┃ ┃ │ │PART /MBR=*63s#5 0 //EXEDATA下的5号资源写入磁盘0的MBR,最多63个扇区。 ┃ ┃ │ │PART /MBR=*63s*%CurDir%\MBROS.MBR 1 //%CurDir%\MBROS.MBR 写入磁盘1的MBR,最多63个扇区 ┃ ┃ │ │PART 1#5 a 0x7 // 反隐藏并激活 逻辑分区1#5分区 ┃ ┃ │ │PART -super -force -clear -xup 1#2 -a 5 2.5G 3.5G // 创建扩展分区。-clear则不可恢复 ┃ ┃ │ │PART -up 1#+L 0x7 +32256 57544704 // 扩展分区最后创建一逻辑分区 ┃ ┃ │ │PART -up 1#-L // 删除最后的逻辑分区 ┃ ┃ │ │PART -up -super -gpt -cmp 1#+1 {EBD0A0A2-B9E5-4433-87C0-68B6B72699C7} 1G 5G ┃ ┃ │ │ {BC65AB2C-B5AF-4197-92B2-00E808FDEE09} 0x9000000000000000 "Basic data partition" ┃ ┃ │ │PART -up -super -gpt -cmp del 1#2 //删除GPT分区,不影响分区里面的数据,可以再映射并加载。 ┃ ┃ │ │PART -up -super -gpt -cmp 1 //仅仅压缩GPT分区表,使得分区号从1开始且连续。 ┃ ┃ │ │PART -super -xup -swap:2 3#1 //3#1和3#2交换 ┃ ┃ │ │PART -xup -super -force -mbr init 1 //初始化成MBR;-mbr换成-gpt则为GPT ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※磁盘操作属于比较危险的系统级操作,请谨慎! ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'PATH' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│PATH [#|@]目录名 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置PECMD.EXE的当前工作目录或建立目录或删除目录。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃PATH│参数│■目录名称。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│PATH %CurDrv%\外置程序 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※前导"@"表示设置PECMD.EXE的当前目录,方便EXEC、DEVI等命令采用相对路径,以缩短命令行长度。 ┃ ┃ │ │※前导"#"表示删除目录,注意该操作也可能删除同名的文件。 ┃ ┃ │ │※省略前导符"@"和"#"时,PATH用于建立目录(能建立多级目录)。 ┃ ┃ │ │※在配置文件内使用带前导"@"的PATH命令必须谨慎,以防引起错乱。 ┃ ┃ │ │※当参数为空时将恢复 PECMD.EXE 默认的当前目录(%SystemRoot%\SYSTEM32)。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'PBAR' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│PBAR [*] [-smooth] <进度条名称>,<进度条形状>,[进度条进度][,[#颜色:]文本] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在_SUB定义的窗口内建立一条进度条。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│ <进度条名称>前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │ │■进度条名称: 字串,进度条名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■进度条形状: 进度条的位置和大小,格式为,左上宽高均为数值。 ┃ ┃PBAR│ │■进度条进度: 浮点数(1~100),初始化进度条的进度百分数,默认为0。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│PBAR Pbar1,L360T11W428H16,0 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※PBAR命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※要设置进度条的进度和文本,可以使用 "ENVI @进度条名称=进度[;[#颜色:]文本]" 来设置 ,参照 ┃ ┃ │ │ ENVI 命令的说明;当设置的数值为-1时将会使进度条隐藏,大于100的数值将被忽略。 ┃ ┃ │ │※可用"ENVI @进度条名称.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※可用"ENVI @进度条名称.color=颜色"来设置文本颜色。 ┃ ┃ │ │※可用"ENVI @进度条名称.percent=[-]smooth"来切换光滑模式。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'PCIP' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│PCIP [IP地址],[子网掩码],[默认网关],[DNS地址],[网卡序号|网卡名称][,网卡状态] //固定IP ┃ ┃ │ │PCIP -,[-],[-],[DNS地址],[网卡序号|网卡名称][,网卡状态] //动态IP ┃ ┃ │ │PCIP ?[*][IP名],[子网名],[网关名],[DNS名],[网卡序号][?][名称变量名] ┃ ┃ │ │ [,MAC名][,连接名][,DHCP名][,bDHCP名][,状态名][,媒体名][,描述名][,类型] //查询 *:实际值┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置计算机IP地址。格式1为固定IP(全部参数不可省)。 格式2为动态(可以指定DNS)。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │※PICP后需紧接参数: *safe为较保守版本; *qk为较NT5.x正常系统快速版本;*qkos为稍快版本(默认)。 ┃ ┃ │ │ 3种版本需要配套使用。 *fresh强制刷新(默认),*nfresh不刷新。*sfsw为NT5.x DHCP到固定IP切换可┃ ┃ │ │ 靠可能慢。*all 所有网卡,否则以太网和无线网。*cah: &缓冲变量名 ┃ ┃ │参数│■IP 地址 : IP形式字符串表示网络的IP地址,省略表示不修改IP地址,"-"号表示自动获取IP地址; ┃ ┃ │ │■子网掩码: IP形式字符串表示子网掩码,省略为不修改子网掩码,IP为"-"时表示自动获取子网掩码; ┃ ┃ │ │ 支持多IP多掩码。中间";"或":"或"&"分隔。多IP需要和多掩码对应,见示例。 ┃ ┃ │ │■默认网关: IP形式字符串表示网关地址,省略为不修改网关地址,IP为"-"时表示自动获取网关地址; ┃ ┃ │ │■DNS 地址: IP形式字符串,表示DNS地址,首选DNS与备用DNS间用";"或"&"或":"连接,省略表示不修改┃ ┃PCIP│ │ DNS地址, "-"号表示自动获取DNS服务器地址; ','需变量方式。 ┃ ┃ │ │ IP、子网掩码、默认网关、DNS,如果为0.0.0.0则为清0。第一次设定时用。 ┃ ┃ │ │■网卡序号: 数字,可省略,默认为0表示第一网卡,1表示第二网卡,2表示第三网卡,依次类推; ┃ ┃ │ │■网卡名称: 形如{D8D9826A-332E-4858-9306-374EC20A9F05} ┃ ┃ │ │ HKLM\SYSTEM\CurrentControlSet\Control\Network\ ┃ ┃ │ │ {4D36E972-E325-11CE-BFC1-08002BE10318},下可查。 ┃ ┃ │ │ 也可为网卡描述如Intel 8255x-based PCI Ethernet Adapter (10/100) ┃ ┃ │ │ 也可为MAC地址,如00-00-3D-46-34-D7或00:00:3D:46:34:D7 ┃ ┃ │ │ 也可为“=连接名称”,如=本地连接 ┃ ┃ │ │■网卡状态: 数字,用于操作网卡的启用或禁用状态,0:禁用 1:启用 fresh:刷新,省略则不改变。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│PCIP 192.168.1.2,255.255.255.0,192.168.1.1,192.168.1.1 或 PCIP -,-,-,-,, ┃ ┃ │ │PCIP ,,,192.168.1.1;10.2.22.1,,1 或 PCIP ,,,,,1 //启用网卡 或 PCIP ,,,,,0 //禁用网卡 ┃ ┃ │ │PCIP ? IP,MASK,GW,DNS,0?NAME,MAC,LINK //多IP多DNS空格间隔 或 PCIP *fresh //刷新 ┃ ┃ │ │PCIP 192.168.1.2;192.168.2.2,255.255.255.0;255.255.255.0,192.168.1.1,192.168.1.1 //多IP ┃ ┃ │ │PCIP 192.168.1.2,255.255.255.0,0.0.0.0,0.0.0.0 //不设GW、DNS也要设0.0.0.0 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※如果没有安装网卡驱动或已禁用网卡或系统不支持网络功能,执行该命令可能没有效果; ┃ ┃ │ │※该命令的参数较多,通常应用的是示例1(设置第一网卡的IP不操作启用)或示例2(自动获得IP和DNS)。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'PINT' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│PINT [-TaskBand|-StartMenu] [*菜单DLL文件名,]<文件名称>,[菜单名称|菜单标识|#字符串ID] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│将 EXE 或 LNK 文件 Pin 到"开始菜单"或"任务栏",NT5.x系统只支持"开始菜单"。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■文件名称: EXE、LNK 等文件名,要带路径和扩展名,支持环境变量解释; ┃ ┃ │ │■菜单名称: EXE、LNK文件右键菜单对应的字符串,如"附到「开始」菜单(&U)"、"锁定到任务栏(&K)";┃ ┃ │ │ 建议只写前部分,"U)"等快捷键标识不写的好; ┃ ┃ │ │■菜单标识: 可以用"[-]StartMenu"或"TaskBand",分别表示Pin到"开始菜单",Pin到"任务栏"[脱离] ┃ ┃ │ │■字符串ID: 数值,"附到「开始」菜单"、"锁定到任务栏"在SHELL32.DLL资源字符串的序号。 ┃ ┃ │ │ #5382:从「开始」菜单脱离 ┃ ┃PINT├──┼──────────────────────────────────────────────┨ ┃ │示例│PINT %SystemRoot%\Regedit.EXE,StartMenu 或 PINT %SystemRoot%\Regedit.LNK,附到「开始」菜单 ┃ ┃ │ │PINT %SystemRoot%\Regedit.EXE,TaskBand 或 PINT %SystemRoot%\Regedit.LNK,锁定到任务栏(&K) ┃ ┃ │ │PINT %WinDir%\System32\calc.exe,#5381 或 PINT %WinDir%\System32\calc.LNK,#5386 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※该命令需系统功能的支持,在一些精简系统或XP、2003系统中可能因功能的精简或欠缺而无法实现; ┃ ┃ │ │※"菜单名称"、"菜单标识"和"字符串ID"3个参数只取其一,当3个参数均省略时表示Pin到"开始菜单"; ┃ ┃ │ │ 这3个参数因系统而异,建议使用系统的"菜单名称"(如“附到「开始」菜单(&U)”)来表示; ┃ ┃ │ │※"菜单名称"原理上可以用系统右键菜单的其它项目,来实现一定的功能,如用"打开(&O)"来打开文件。┃ ┃ │ │※Win10 如果本程序拷贝为 本程序路径.Dir\Exporer.exe 则使用之。否则如果无非0 (DWORD)HKLM\Soft┃ ┃ │ │ Ware\PELONGON\USRCF\NOTMPEXPLORER 则临时创建一个。如果无非0(DWORD)HKLM\SoftWare\PELONGON\ ┃ ┃ │ │ USRCF\NODELAYEXPLORER,则Exporer.EXE TaskBand时按需延时。本程序路径.WIN10FromStartMenu ┃ ┃ │ │ 本程序路径.WIN10ToStartMenu HKLM\SoftWare\PELONGON\USRCF\下的 WIN10FromStartMenu、 ┃ ┃ │ │ WIN10ToStartMenu、WIN10FromTaskBand、WIN10ToTaskBand PECMD的5381/5382串 可配置Win10对应菜┃ ┃ │ │ 单名 也可一起放入 本程序路径.USRCFG.INI ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'PUTF' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│PUTF[*][.][#] [-16] 文件名,[起始位置[#长度限制]],<数据队列|PE变量名|#[.]内部数据ID[|目录]>┃ ┃ │ │PUTF -dd [-bs=BS] [-ibs=BS] [-obs=BS] [-count=COUNT] [-len=LEN] [-skip=SKIP] [-skipb=SKIPB] ┃ ┃ │ │ [-va] [-conv=notrunc] [-quick|-qspace] <文件名>,[输出起始位置],输入文件名或Int64 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│以 BINARY 形式修改指定文件的数据。后缀#则数据为PE对象,最多可多写2字节,为0。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■文件名: 已存在的文件名,支持环境变量解释;-16:数据队列为16进制 -v:写PE变量 ┃ ┃ │ │■起始位置: 数值,相对于文件基址的起始位置,支持16进制数值,如 0x100;从0开始。默认0。 ┃ ┃ │ │ 可带TGMKS后缀。没有#长度限制就是全部数据。 ┃ ┃PUTF│ │■数据队列: [*重复因子] 数值,从起始位置开始写入的数据,多个数值之间用空格分隔,如 *1M 0x00 ┃ ┃ │ │ 0x23 0xAD *1K 0x1C 128。资源内部数据ID位于"EXEDATA"下;"."表示不自动解压。 ┃ ┃ │ ├──────────────────────────────────────────────┨ ┃ │ │ 格式2为高速2进制块传送模式。BS为块字节,COUNT为块数,SKIP为输入文件文件起始块数,SKIPB为输 ┃ ┃ │ │ 入文件文件起始字节数,可带TGMKS。文件名可不存在。-conv=notrunc:不截短已存在的文件。输入文 ┃ ┃ │ │ 件名可为zero表示清0.-quick稀疏文件。-qspace迅速分配空间。-va不初始化空间。逻辑盘A:-Z:, 光驱┃ ┃ │ │ \\.\CDROM0~N, 磁带\\.\TAPE0~N,磁盘 \\.\PhysicalDrive0~N ,NUL为哑文件。LEN长度字节数,优先┃ ┃ │ │ 于COUNT。 -fd=文件句柄:写文件加速 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│PUTF %CurDir%\Memu.DAT,0x400,0x23 0xAD 0x1C 0x80 0x6F 或 PUTF* A.DAT,,#100 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※PUTF命令修改文件的起始位置是相对于文件基址的,并以复盖方式修改文件,不会改变文件的长度;但┃ ┃ │ │ 新文件不受长度限制。新文件但指定>1 的起始位置,或远过文件尾,中间会留下一个洞(NTFS等高级系┃ ┃ │ │ 统上不占磁盘);也没什么不利影响。PUTF*可以扩大文件。后缀“.”表示直接写入文本(ANSI)。 ┃ ┃ │ │※以 BINARY 方式读取文件的对应命令是 GETF;长度限制只对PE变量名和内部数据ID有效。 ┃ ┃ │ │※以字符串方式读取文件或修改文件的命令为 READ 命令和 WRIT 命令。 ┃ ┃ │ │※资源可以写为:"[文件名]""#资源名[|目录名]" 后面1对""可省。此时资源名可为非数字。 ┃ ┃ │ │※支持 \\?\Harddisk0Partition2\A.TXT \\?\HarddiskVolume5\A.TXT \\?\ImDisk0\A.TXT ┃ ┃ │ │※文件名以&开始则为PE变量 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'RADI' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│RADI [-right -center -scale[:[大小][:图片]]] [*] <名称>,<形状>,[标题],[事件],[状态],[组ID] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在_SUB定义的窗口内建立一个单选框控件。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│ <单选框名称>前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │ │■单选框名称: 字符串,单选框的名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■单选框形状: 单选框位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■单选框标题: 单选框上的文字,用于描述单选框的功能或说明。 ┃ ┃ │ │■单选框事件: 点击该复选框时执行的命令,必须是 WinCMD 支持的有效命令。 ┃ ┃RADI│ │■单选框状态: 数字,1或-1为钩选状态,0,2或-2为没有钩选,小于0为灰色不可用状态,±16不可见。┃ ┃ │ │■单选框组ID: 数字,默认为0,可以将多个单选框分组,组内的单选框可以多选一,组间互不影响。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│RADI RadioButton1,L32T314W100H20,卸载WimShExt.DLL,ENVI @Group1=%RadioButton1%,1,1 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※RADI命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※要设置单选框标题,可使用 "ENVI @单选框名称=单选框标题" 来设置,参照 ENVI 命令的说明。 ┃ ┃ │ │※可用"ENVI @单选框名称.Check=数值"来设置单选框钩选状态,数值0为未钩选状态;非0为钩选状态。 ┃ ┃ │ │※可用"ENVI @单选框名称.Enable=数值"来设置单选框可用状态,数值0为禁用状态;非0为可用状态。 ┃ ┃ │ │※可用"ENVI @单选框名称.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※可用"ENVI @控件名称.*del="来删除。 -scale:内部也缩放 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'RAMD' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│RAMD [P可用内存百分数] [L最小值] [H最大值] [F剩余值] <===旧格式 ┃ ┃ │ │RAMD <驱动名称>[,磁盘大小][,磁盘格式][,盘符字母][,磁盘卷标][,压缩标志][,选项] <===新格式 ┃ ┃ │ │RAMD ImDisk*[变量名][*[偏移]*大小*[控制]*设备] [--[f]ins [-rmeu-]] -a -t 类型 -m 加载点 [-n]┃ ┃ │ │ [-o op1[,op2...]] [-f|-F 源文件设备名] [-s 大小] [-b 偏移] [-v 分区号] [-S 扇区大小] ┃ ┃ │ │ [-u ImDisk编号] [-x 1磁道扇区数] [-y 1柱面磁道数] [-p "format程序参数"] ┃ ┃ │ │RAMD ImDisk*[变量名] -e [-s 大小] [-o opt1[,opt2 ...]] [-u ImDisk编号 | -m 加载点] ┃ ┃ │ │RAMD ImDisk*[变量名] -d|-D [-u ImDisk编号 | -m 加载点] ┃ ┃ │ │RAMD ImDisk* -BD -m 加载点 [--remove] [--nbrd] <===通知盘符添加/删除 ┃ ┃ │ │RAMD ImDisk*[变量名] -l [--id] [-u ImDisk编号 | -m 加载点] <===ImDisk完全格式 ┃ ┃ │ │RAMD ImDisk* -gui <===ImDisk图形模式 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置RamDisk大小。 变量名返回结果。[详见Imdisk帮助.txt] 加载点:盘符或目录 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃RAMD│参数│■驱动名称: Ramdriv 或 ImDisk;最大值、最小值均为MB。 ┃ ┃ │ │■磁盘大小: 单位为 MB,用 Pxx Lyy Hzz 定义,xx为可用内存百分数,yy为最小值,zz为最大值; ┃ ┃ │ │■磁盘格式: 支持 FAT、FAT32、NTFS 三种格式,设置时将按参数格式化,省略时不对磁盘作格式化; ┃ ┃ │ │■盘符字母: 为 ImDisk 虚拟内存盘分配的盘符,使用 Ramdriv 驱动时该参数及"磁盘卷标"均要省略; ┃ ┃ │ │■磁盘卷标: 使用 ImDisk 驱动时格式化磁盘时设置的卷标。 ┃ ┃ │ │■压缩标志: 1:NTFS压缩 0或空:不压缩。 ┃ ┃ │ │■选项: 0x1位:为1则物理内存方式,仅对Imdisk。 ┃ ┃ │ │■控制:0x1:可写。0x10:关机自卸载。0x40:禁止关机自卸载。0x20:关机全卸载。0x100/0x200:本盘多分┃ ┃ │ │ 区要/不要可写。ImDisk完全格式中:--nbrd 则不广播盘符 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│RAMD P20 L32 H64 ┃ ┃ │ │RAMD ImDisk,L64,NTFS,B:,ImDisk1[,1,1] 或 RAMD Ramdriv,P20L32H64 ┃ ┃ │ │RAMD ImDisk*ret*2097280s*5734529s*0*\\.\PhysicalDrive0 -a -o hd -m Z: //扇区映射 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│ 三个参数都可单独使用,如使用 RAMD P10 时,将可用内存的10%设置为RamDisk。 ┃ ┃ │ │※使用 Ramdriv 驱动时由驱动分配盘符并格式化;使用 ImDisk 驱动时可由 PECMD 分配盘符并格式化;┃ ┃ │ │※使用 ImDisk 驱动时可用该命令给指定的虚拟盘扩大 RAMD ImDisk,L128,NTFS,B:,ImDisk2 ┃ ┃ │ │※Pxx Lyy Hzz 三个参数可单独使用,PECMD限定的最小值为1MB,最大值(X86系统2GB,X64系统32GB); ┃ ┃ │ │※挂载 WIM 映像需要物理内存方式(RAMD ImDisk,L64,NTFS,B:,ImDisk1,,1)。FAT32分区不能太小; ┃ ┃ │ │※命令若执行成功,进程环境变量 %CurRamDisk% 即为盘符,可按需用 ENVI 设置成系统环境变量。 ┃ ┃ │ │※内置IMDISK需要cabinet.DLL。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'RAND' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│RAND [变量名] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│返回一个随机数 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■变量名: 用于保存随机数的变量名称。默认为RANDOM。其实直接读%RANDOM%即可,可不用RAND命令。 ┃ ┃RAND├──┼──────────────────────────────────────────────┨ ┃ │示例│RAND CurRand ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│示例的结果可能是"14935321432143"。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'READ' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│READ[-UNICODE|-UNICODEB|-UTF8] [*fix] <文件名称>,[读取位置[+行数]],[变量名称] ┃ ┃ │ │READ [*fix] [-[*]],<读取位置[+行数]>,<变量名称>,<被读内容|被读内容变量名> ┃ ┃ │ │READ [*fix] --,<读取位置[+行数]>,<变量名称> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│以字符串(行)的形式读取指定文件的数据。其它编码:-GBK -BIG5 -UNI -UNIBE -ANSI -编码数字 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■文件名称: 已存在的文件名,支持环境变量解释;*fix:孤立的回车也当作换行(加密BAT/CMD) ┃ ┃READ│ │■读取位置: 行号,小于0表示读取行数,0表示最后一行,其余数值读取指定的行号,支持16进制数值;┃ ┃ │ │ 默认1。为*或**或*r则全部;*换行作为间隔;*r为回车换行作为间隔,两者可以相互转换。**为原始 ┃ ┃ │ │ 内容换行。行数默认1 ,0表示到结尾。 ┃ ┃ │ │■变量名称: 字符串,用于保存读取结果的的变量名。默认READLINE。 ┃ ┃ │ │■被读内容: 将从此多行串内容读入。一般为由EXEC*来获取或ENVI拼装。此时文件名为-或空或-*;-*[?┃ ┃ │ │ ]则此为被读变量名(?测编码)。-UNICODE -UNICODEB -UTF8指文件编码,可简为-UNI -UNIB,BOM优先 ┃ ┃ │ │■格 式3: 从标准输入读入,位置一般为1,每次一行。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│READ %CurDir%\Memu.LST,10,CurLine 或 READ %CurDir%\Memu.LST,0,LastLine ┃ ┃ │ │READ -,10,Line,%&MSG% 或 READ -*,10,Line,&MSG ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※READ命令只适用于读取纯文本文件,如菜单配置文件。读原始内容GETF ┃ ┃ │ │※支持UD文件: ud:UD文件名:UD内部文件名 ┃ ┃ │ │※支持 \\?\Harddisk0Partition2\A.TXT \\?\HarddiskVolume5\A.TXT \\?\ImDisk0\A.TXT ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'RECY' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│RECY <分区标识>,<最大容量> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置 Windows 系统回收站,支持 XP/2003/VISTA/Windows7 及其 WinPE 系统。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■分区标识: 用分区盘符或"*:\"来表示,分区盘符表示指定分区,"*:\"表示所有分区,"\"可以省略。 ┃ ┃RECY│ │■最大容量: 数值,表示回收站的最大空间,NT5.x系统表示百分数,NT6.x系统表示以MB为单位的容量;┃ ┃ │ │ 当数值为0时表示禁用指定分区的回收站功能,被删除的文件将不会移到回收站中。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│NT5.x系统: RECY D:,10或RECY E:,0或RECY *:,0 NT6.x系统: RECY C:,2048或RECY D:\,0或RECY *:\,0┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※在NT5.x系统中最大容量超30时,PECMD会使用默认值10;WinPE 中该命令建议放在 INIT 命令后使用。┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'REGI' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│REGI [--a[v|k]] [前导]<\子项\\><键名,变量名>[,类型变量名] ┃ ┃ │ │REGI [--0] [--16] [前导]<\子项\\>[[键名][操作符][[类型符]数据值]] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│读取或设置、删除注册表数据。--name 数据变量名 --k只创建key --byte字节流 --v[-]不保存 --qk快 ┃ ┃ │ │ --init 读取失败为空 --a[v|k]列出全部[变量|子键] -su提权 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■前导符 "$"、"#"、"@"、"*"或"**"或"*$"、"~" 或"~~"分别表示读取注册表中的REG_SZ、REG_DWORD ┃ ┃ │ │ 、REG_BINARY 、REG_MULTI_SZ、REG_EXPAND_SZ类型数据。写入时可表示数据类型。~~表示再解释注册┃ ┃ │ │ 表数据中的环境变量。**表示读时子串"\0"解释为"\\0", *$为多行串;写时,子串"\\0"存储为"\0" ┃ ┃ │ │ ,*$则将多行串存储为\0间隔的各个部分。 ┃ ┃ │ │ 读时2个类型:.为任意类型,可以接 类型变量名; ? 为查询类型(NI为未设定的空白值名); ┃ ┃ │ │ "^"、"+"、"b"、"u"、"n"、为REG_LINK、REG_QWORD、REG_QWORD_BIG_ENDIAN、REG_MUI_SZ、REG_NONE┃ ┃ │ │ 类型,智能前置。 --t:数字类型,直接指定其它任意类型,数据同REG_BINARY。 ┃ ┃ │ │■子项名 所选 ROOTKEY 下注册表项的完整名。也可以直接用HKEY_LOCAL_MACHINE等 ┃ ┃ │ │■键值名 要操作的键值名。省略则操作默认键值;如果操作符为"!"且没有"=",则用于删除整个子项。┃ ┃ │ │■变量名 变量名用于保存返回值。有逗号但没有名字则为RegDat。无逗号设置、删除注册表数据。 ┃ ┃REGI│ │■操作符 操作符"!"为删除整个子项;操作符"="且没有数据为删除;操作符"="且有数据为设置数据。 ┃ ┃ │ │■类型符 数据类型。省略为字符串;"#"为REG_DWORD类型数据,如"#0x20";"@"为REG_BINARY类数据,┃ ┃ │ │ 如"@23 34 90 255"。"*"为REG_MULTI_SZ,如"*string1\0str2\0\0" 。"~"为REG_EXPAND_SZ ┃ ┃ │ │ 如"~%SystemRoot%\System32"。强烈建议用前导符表示数据类型,以避免和字符串混淆。前导符优先。┃ ┃ │ │■数据值 字符串空值用""表示、REG_DWORD类型数据、REG_BINARY类型数据支持16进制数值。 ┃ ┃ │ │ --16 配合@#数据为16进制。--0配合=为建立空项;配合\!清空该项下的子项、值和默认值; ┃ ┃ │ │ 可以分成子项--0:数字N, 1清默认值 2删所有子项 4删所有值。可以多个--0:N,数字可合并(如5)。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│REGI HKCU\SOFTWARE\PECMD\Version=#1200 、REGI $HKCR\lnkfile\IsShortcut= ┃ ┃ │ │REGI $HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache,IECache ┃ ┃ │ │TEAM SET Val=" cdcsd ,| SET PT=Software\"a ,| REGI $HKLM\%&PT%\\%&Val%=1\\2 ," //超级模式 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※此命令比较复杂,请仔细看说明,示例3为读取IE缓存的位置。 ┃ ┃ │ │删除> REGI HKCU\abc= 或 TEAM REGI HKCU\abc=| ┃ ┃ │ │空串> REGI HKCU\abc="" 或 TEAM REGI HKCU\abc= | 或 REGI $HKCU\abc= //可其它串前导(* ** ~ ~~)┃ ┃ │ │或 REGI HKCU\abc=%&NOTHING% //%&NOTHING%为一置空的变量 ┃ ┃ │ │如果需要写入『""』本身,或前导字符,或纯粹的一串空字符可以变量传入或用前导 ┃ ┃ │ │写入前置空字符1> REGI $HKCU\abc= 123 ┃ ┃ │ │写入前置后置空字符2> TEAM REGI $HKCU\abc= 123 | ┃ ┃ │ │写入前置后置空字符3> REGI $HKCU\abc=%VAL% // %VAL%含有任意空字符组合 ┃ ┃ │ │REGI --0 $HKCU\abc\! //清空 REGI --0 $HKCU\abc= //建空项 REGI --16 @HKCU\abc=313233 //16进制┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'RPOS' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│RPOS[*] [*] [-case] [[* [*]][~]变量名][,[~]行名]=<字符>,<数值>,字符串 //前缀*返回多个位置 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│返回指定"字符"在"字符串"右边起出现的位置。*则后面[字符]是变量名 ~则从右计算位置 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■变量名: 用于保存命令结果的变量名; -case为大小写匹配。 ┃ ┃ │ │■字符串: 被检测的字符串;可以任意字符,空格 ┃ ┃RPOS│ │■字 符: 被检测的字符,不区分大小写;可以任意字符,空格。有多个字符作子串模式。为,须紧贴= ┃ ┃ │ │■数 值: 指定被检测的字符出现的次数。 ┃ ┃ │ │■RPOS* : 表示查找的是子串。即“=”和“,”间的部分;可以是任意字符与空格。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│RPOS iPos=a,2,123A56|1234A6|abcdef 或 RPOS iPos=a,3,123A56|1234A6|abcdef ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※当"数值"小于1时返回最左边被检测字符的位置,如上例的结果是4;返回结果为0时表示没有找到。 ┃ ┃ │ │※该命令按 Unicode 字符串处理,示例1的返值为12,示例2的返值为4。子串不可含“,”;可作为字符 ┃ ┃ │ │※子串第2字符起不能为“,”;但第1字符和字符方式可以。可变量传入。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'RSTR' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│RSTR [*] <变量名><=><数目>,<字符串> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│从指定"字符串"的右边截取指定数目的字符,并将结果返回给指定名称的变量。 *则后面是变量名 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■变量名: 用于保存命令结果的变量名; ┃ ┃RSTR│ │■字符串: 源字符串,长度不限; ┃ ┃ │ │■数 目: 指定截取字符的数目。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│RSTR aStr=2,1234567890 或 RSTR aStr=5,1234567890 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※当"数值"小于1时或超出源字符串的长度时,返回结果为整个源字符串(相当于字符串复制); ┃ ┃ │ │※该命令按 Unicode 字符串处理,示例1的返回值为"90",示例2的返回值为"67890"。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'RUNS' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│RUNS <程序命令>,<启动项名称> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置Windows的启动项 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■程序命令为EXE、CMD、BAT各种可执行的命令,可带参数;启动项名称为文字。 ┃ ┃RUNS├──┼──────────────────────────────────────────────┨ ┃ │示例│RUNS PECMD.EXE EXEC !%CurDrv%\外置程序\DRIVER\STARTDRIVER.CMD,安装驱动。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※原REGI命令可实现相同的功能,只是用REGI命令表示需要文字太长,才将这一功能单独做成一条命令。┃ ┃ │ │ 程序命令和启动项名称半角英文",",可用全角中文","代替或变量传入。 ┃ ┃ │ │※本命令不能在命令行中使用,只能在配置文件中使用。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SCRN' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SCRN [-win] [W变量名][,H变量名][,x变量名][,y变量名][,任务栏位置名] ┃ ┃ │ │SCRN -cap[gui] [:格式:][文件名],[#窗口ID|[;源文件]] //屏幕捕捉 格式如:image/png ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│返回屏幕当前的宽和高。-win则为最大窗口大小。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃SCRN│参数│■变量名: 用于保存屏幕当前宽和高的变量名; ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│SCRN ScrW,ScrH 或 SCRN -cap a.bmp,0 或 SCRN -cap win.bmp,#1181336 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※变量名不能和已存在的变量名相同,当命令出错时两变量的返回结果均为空值或数值0 ┃ ┃ │ │※屏幕捕捉:位置参数>=1则捕捉。无位置参数和窗口ID则获取先前的保存。无文件名则留到下次来取 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SED' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SED -[Lf:Lt:Rf:Stp] -ni -t[s] -ex 变量名[;次名]=[次数][:跳过数][标志],正则,替换,原串//替 ┃ ┃ │ │SED -ni [*]名[;次名][;行名]=?[次][:跳次][标志],找正则串,[子名1;子名2],原串//查找位置,0为无 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│替换或查找正则表达式。-t为字符集翻译 -ts[1]为字符串集翻译(字符0x0A分隔[整个]) -ex [-ex [-ex]┃ ┃ │ │原始串[正则串[替换]]为变量名 -L分行 -h[~]?非开始时引导串[不含] -e[~]?非结尾时结尾串[不含] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃SED │参数│标志:是3个字符,依次对应后面3个串,*为不解释(字面样子),_为占位。-many或前缀*返回多个位置 ┃ ┃ │ │*ni不区分大小写,\u:转换为大写,\l:转换为小写 -[Lf:Lt]为向量操作 名/行名前~则从右计算位置 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│SED &&V=3:1,[A-Z],=,你好AB 或 SED &&V=?:1,[A-Z],,你好ABC 或 SED -t &&V=0,[AB],ab,ABA13 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│替换次数默认1(多子名为0),0为全部;跳过次数默认0。-[f1:t1[:f2]]为向量操作 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SEND' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SEND [-gui [-m] [-nfocus] [-right|-left|-top]] [--ext] [--s] <按键代码1[_|^]>[;按键代码2]...┃ ┃ │ │SEND -m flag;dx;dy[;dat;[extdat]] //模拟鼠标事件 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│模拟按键/鼠标。 --ext:扩展键 --s:安静 //支持 ,;:/ ' ' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃SEND│参数│■虚拟按键代码,如VK_NUMLOCK,详情可参后面虚拟键列表及相关编程资料。如果按键代码以"_"结束, ┃ ┃ │ │ 则仅模拟按键按下;"^"则仅模拟按键弹起;否则模拟按下并弹起。 ┃ ┃ │ │■按键: 简单按键("A"~"Z"或"0"~"9")可用字母表示;其它按键要用前导符"#"连虚拟按键代码表示, ┃ ┃ │ │ 如果按键代码以"_"结束,则仅模拟按键按下;"^"则仅模拟按键弹起;否则模拟按下并弹起。 ┃ ┃ │ │ 支持0x开头或长度>=2的没有#前导的编码。 支持VK_的名字串 ┃ ┃ │ │■flag: 0x8000:为绝对坐标而不是相对坐标。1:移动 2/4:左键按下/抬起 8/0x10:右键按下/抬起 0x20/┃ ┃ │ │ 0x40:中键按下/抬起 0x80/0x100:X键按下/抬起 0x800:滚轮滚动 0x4000:映射到整个虚拟桌面 ┃ ┃ │ │ 0x100000:触摸屏 ┃ ┃ │ │ dx/dy:绝对或相对坐标 dat:一般为0,"滚轮滚动"且被点击则为120 extdat目前按只能为0 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│SEND #0x12_,#0x09_,#0x09^,#0x12^ 或 SEND VK_NUMLOCK ┃ ┃ │示例│SEND 0x12_,0x09_,0x09^,0x12^ //旧格式 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│上面的示例模拟 Alt+Tab。按键代码支持 16 进制和十进制。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SERV' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SERV [-wait] [启动开关] [?返回名] [!]<服务名称> ┃ ┃ │ │SERV-create [?返回名] 服务名称,文件,类型,启动,出错处理,依赖,用户,密码,显示名,Group,Tag ┃ ┃ │ │SERV-delete [-stop-] [?返回名] 服务名称 //无-stop-含自动停止 ┃ ┃ │ │启动开关: -boot -system -auto -demand -disabled -delayed-auto -stop ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│启动或停止或查询服务或驱动程序。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃SERV│参数│■指定服务名称。前导"!"表示停止服务,否则启动服务。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│SERV FBWF 或 serv-create imdisk,system32\drivers\imdisk.sys,1,2,0,,,,ImDiskVirtualDiskDriver┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│可用此命令来启动FBWF服务(如果安装了的话),以增加系统盘的可写空间,这样PE就能在光盘上运行了。┃ ┃ │ │查询返回:错误码 ServiceType CurrentState ControlsAccepted Win32ExitCode ┃ ┃ │ │ ServiceSpecificExitCode CheckPoint dwWaitHint dwProcessId dwServiceFlags ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SHEL' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SHEL [-user|-sys] [-shel:"自动命令"] <文件名(含路径)|TEAM或EXEC开始的命令>[,密码BASE字符串] ┃ ┃ │ │ [,重试次数] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│加载指定的SHELL,并将SHELL锁定。 -user强制配合MAIN -user。 -sys直接强制为系统SHELL ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■SHELL文件名(含路径,可使用环境变量) ┃ ┃ │ │■密码是英文字母和数字,区分大小写。 ┃ ┃ │ │■省略密码BASE字符串时会自动登录,默认的重试机会为3次。 ┃ ┃SHEL├──┼──────────────────────────────────────────────┨ ┃ │示例│SHEL %SystemRoot%\EXPLORER.EXE ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※本命令功能与EXEC $相似,修改进程中关机代码(挂接"ExitWindowsEx"函数)。 ┃ ┃ │ │※本命令同时具有锁定SHELL的功能,当SHELL被杀时能自动加载SHELL。 ┃ ┃ │ │※本命令建议与HIDE命令一起使用,可以达到较好的目的。 ┃ ┃ │ │※本命令不能在命令行中使用,只能在配置文件中使用。 ┃ ┃ │ │※SHEL命令必须在 HOTK 和 HIDE 命令之后。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SHOW' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SHOW [=1] [-SKIP=类型] [-check] [-skiptp:tp1;tp2] [-skippt:hd1:lpt1;hd1:lpt2] ┃ ┃ │ │ [-from:盘符[表]] [*&-] [磁盘分区],[U盘符[表]],[等待时间],[起始盘符[表]] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│显示系统存在的移动硬盘、固定硬盘的隐藏分区或沒有加载的分区,并给这些分区分配盘符。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■&表示局部模式,其它进程很可能看不到。加载时*为持久加载;卸载时*为全部卸载,否则为最近的加 ┃ ┃ │ │ 载。-为卸载。=1 为如果已经加载,就不加载。-check:无有效系统则不加载。 ┃ ┃ │ │■磁盘分区: 由 [硬盘号或标识符:分区号或标识符#分区号] 组成,"硬盘号"与"标识符"只取其一。 ┃ ┃ │ │ ◆硬盘号: 用数值表示,小于"0"表示所有的硬盘、U盘和移动硬盘,"0"表示"hd0","1"表 ┃ ┃ │ │ 示"hd1","2"表示"hd2","3"表示"hd3",依次类推; ┃ ┃ │ │ ◆标识符: 用"F"或"U"表示,"F"表示固定硬盘,"U"表示U盘或USB移动硬盘; ┃ ┃ │ │ ◆分区(逻辑)号: 用数值表示,小于"0"表示全部还没有盘符的分区,"0"表示全部还没有盘┃ ┃ │ │ 符的可见分区,"1"表示第1分区,"2"表示第2分区,"3"表示第3分区,依┃ ┃ │ │ 次类推;为空或-则删除。#后的为物理分区号。1-4为主分区,5-N 为逻┃ ┃ │ │ 辑分区。 ┃ ┃SHOW│ │■盘符字母: 用字母"A~Z"表示,省略"盘符字母"或设置盘符不合理时自动分配盘符。 ┃ ┃ │ │ 可以是汉字。 汉字可以解决盘符不足,同时很私密(不能被列表),按需加载、卸载。 ┃ ┃ │ │■等待时间: 数字,表示为设备就绪等待若干时间(毫秒)后才执行分配盘符的功能。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│SHOW 0:1,H 或 SHOW U:1,U 或 SHOW F:0 或 SHOW U:0,,3000 或 SHOW U:-1 或 SHOW 0:-1 或 SHOW ┃ ┃ │ │SHOW 0#1,H 或 SHOW 0:1 或 SHOW 0#1 或 SHOW - 0:1 或 SHOW - 0#1 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※某些型号的机子在系统启动后已经可以识别移动硬盘,但没有为移动硬盘指派盘符,可以通过 SHOW 命┃ ┃ │ │ 令的"U"标识符为移动硬盘分配盘符,示例2表示给"移动硬盘的第1分区"指派为盘符"U:"; ┃ ┃ │ │※示例1表示"硬盘0分区1"指派为盘符"H:",示例3表示自动为"固定硬盘的所有可见分区"指派盘符; ┃ ┃ │ │※通常"等待时间"可以省略,"等待时间"是驻留内存的PECMD在检测到移动硬盘插入时内部使用的变量; ┃ ┃ │ │※省略所有参数的SHOW命令不会主动载入隐藏分区,要载入隐藏分区,"分区号"必须设置为数值"-1"; ┃ ┃ │ │※删除盘符可用SHOW或SUBJ命令,可载入隐藏分区的外置程序并保持原分区隐藏属性。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SHUT' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SHUT [-force] [E|O数字|C|R|L|H|S|SHUTDOWN|-] [--] [脚本参数表] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│关闭或重启计算机。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │ -force : 快速关机。 ┃ ┃ │参数│■无参数 : 默认为关闭系统; ┃ ┃ │ │■参数"E": 先弹出光驱,等待10秒; ┃ ┃ │ │■参数"O数字": 先弹出光驱,等待数字指定的毫秒数,默认10000毫秒(10秒) ┃ ┃ │ │■参数"C": 关闭光驱; ┃ ┃ │ │■参数"H": 执行休眠操作,系统必须支持休眠(可以在控制面板的电源选项启用休眠); ┃ ┃SHUT│ │■参数"L": 执行注销用户操作; ┃ ┃ │ │■参数"R": 执行重启系统操作; ┃ ┃ │ │■参数"S": 执行挂起系统操作。 ┃ ┃ │ │■参数"K": 锁定该计算机。 ┃ ┃ │ │■参数"SHUTDOWN": 另类关机。带参数 -s:关机(默认) -r:重启 -f:强制(默认) --f:取消-f -t 秒数 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│SHUT H ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※可在"EXEC"命令的时候指定挂接"ExitWindowsEx"函数,配合此命令使用,将拦截所有的关闭系统调 ┃ ┃ │ │ 用,达到正确关闭的目的(注意,此功能是快速关机,可能不会保存所有数据)。 ┃ ┃ │ │※如果不能给 U 盘、USB移动硬盘等设备及时分配盘符或者关机缓慢,请尝试重启 AudioSrv 服务(对于┃ ┃ │ │ 部分 SIGMATEL HD 系列集成声卡有用) ┃ ┃ │ │※TEAM EXEC =PECMD SERV !AudioSrv|SERV AudioSrv ┃ ┃ │ │※REGI HKLM\SOFTWARE\PELOGON\FORCESHUTDOWN=#1 //这样设置后,开始菜单也是快速关机 ┃ ┃ │ │※关机时自动执行 %SystemRoot%\System32\OnShutdown.wcs 操作码 脚本参数表 ┃ ┃ │ │ 操作码:shutdown=关机 reboot=重启 logout=注销 suspend=挂起 hiber=休眠 poweroff=关电 unknown┃ ┃ │ │ lock=锁定计算机 关机菜单支持:shutdown reboot logout poweroff unknown ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SITE' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SITE <文件目录路径>,<文件目录属性> ┃ ┃ │ │SITE *touch[:[cr][*local:|*local0:|*sys:|*sys0:|*utc:]时间],<文件>[,返名] ※更新文件时间 ┃ ┃ │ │SITE ?文件版本变量名[,产品版本变量名]=FVER,文件名 ※查文件版本 ┃ ┃ │ │SITE ?[-local -ws -link] [[*]创时名[,[*]写时名][,[*]访时名]=FTIME,文件名 ※查文件时间 ┃ ┃ │ │SITE ?[A名][,H名][,R名][,S名][,完整名]=FATTR,文件名 ※查文件属性 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置或清除文件目录的属性,SITE命令支持A、H、R、S 四种属性。FTIME和DATE兼容,默认*local0。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃SITE│参数│■设置属性用"+",清除属性用"-",(A=文档; H=隐藏; R=只读; S=系统) ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│SITE %SystemDrive%\BOOT.INI,+H+R ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※SITE命令既可设置文件属性,也可设置目录属性。时间变量名前*则返回UTC时间整数,可直接比较运算┃ ┃ │ │ ;否则字符串,各个段等宽,为年月日时分秒微秒星期。 FVER/FVER/FATTR 映射到ENVI/SET命令。 ┃ ┃ │ │ AHRS变量返回0或1;完整变量返回全部(不只4个)属性16进制;失败为空。 ┃ ┃ │ │※-local则返回本地时间,默认返回世界时间。 -ws则后面加一年的第几周, -ws1周日为周末。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SIZE' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SIZE [-link] <变量名><=><文件目录名> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│返回指定"文件目录"的所占的大小,单位为字节 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■变量名: 用于保存文件目录所占的大小的变量名称; -link:追踪连接文件 ┃ ┃SIZE│ │■文件名: 合法的文件目录名称。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│SIZE iSize=C:\Windows\System32\calc.exe 或 SIZE iSize=C:\Windows\System32 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※当文件目录名是相对路径时,表示相对于 WinCMD.EXE 的工作目录或配置文件的工作目录; ┃ ┃ │ │※示例1结果是文件"calc.exe"大小,示例2结果是目录"C:\Windows\System32"的大小。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SLID' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SLID [-right] [-left] [*] <滑块名称>,<形状>[,值信息][,命令参数名][,命令][,状态] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在_SUB定义的窗口内建立一个滑块。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│ <按钮名称>前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │ │■滑块名称: 字符串,按钮名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■形状: 按钮位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■值信息: [起始值][:终到值][:初值][:页大小] 。默认:0:100:0。 ┃ ┃SLID│ │■事件: 点击该按钮时执行的命令,必须是 PECMD 支持的有效命令。 ┃ ┃ │ │■状态: 数字,负号为禁用状态。0x10不可见。0x40水平。0x80无滑块 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│SLID SLID2,L32T108W300H54,30:100:50,CALL OnSPIN1 %SLID2%,0x40 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※SLID命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※要设置SPIN上的文本,可使用 "ENVI @SLID名称=按钮文本" 来设置,参照 ENVI 命令的说明。 ┃ ┃ │ │※"ENVI @SLID名称.Enable=[#]数值",0为禁用状态;1为可用状态(不响应)。#用于子线程 ┃ ┃ │ │※可用"ENVI @SLID名称.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※可用"ENVI @SLID名称.VAL=[当前值][:起始值][:终到值][:页大小]"来设置值信息。 ┃ ┃ │ │※可用"ENVI @SPIN名称.VAL=?[当前值名][:起始值名][:终到值名][:页大小名]"来查询值信息。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SOCK' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SOCK [*] 名称;[协议族][;协议类型][;协议号] //可以用逗号,下同 ┃ ┃ │ │SOCK --file [*] 名称;[we][-rwd];文件名 //打开一个自动释放的文件句柄,给API用,w可写,-重置共享┃ ┃ │ │SOCK --shm [*] 名称;[w];共享名;长度[;源文件;偏移;初值;初填长度] //申请一块共享内存,w为可写 ┃ ┃ │ │SOCK --event [*] 名称;共享名[;初始有信号(0);手动(0)] //申请一事件量 ┃ ┃ │ │SOCK --sem[aphore] [*] 名称;共享名[;初始信号数(1);最大手动信号数(1)] //申请一信号量 ┃ ┃ │ │SOCK --mutex [*] 名称;共享名[;初始锁住(0)] //申请一互斥锁 ┃ ┃ │ │SOCK --mailslot [*] 名称;共享名[;是服务端(自动);超时ms(无限)] //邮槽 .read/write收发 ┃ ┃ │ │SOCK --pipe [*] 名称;共享名[;超时ms;缓冲;连接] //管道 .read/write收发 .connect连接 ┃ ┃ │ │ 连接: 0x1:立即连接 0x2:客户端 0x4:服务端 0:自动(先者服务) ┃ ┃ │ │SOCK --gethostbyname[*|#] IP名称;主机名字 //返回IP地址,*则空格间隔的多个地址,#为整数 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│定义一个自动回收的网络连接对象。 --exist:检测(PIPE可能返回231)--only:不重复 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│ <按钮名称>前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │ │■名称: 字符串,按钮名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■协议族: 一般为默认的 internetwork:AF_INET=2 ┃ ┃SOCK│ │■协议类型: 常用 有连接:SOCK_STREAM=1(默认) 无连接:SOCK_DGRAM=2 ┃ ┃ │ │■协议号: 常用TCP:IPPROTO_TCP=6(默认) UDP:IPPROTO_UDP=17 IP:IPPROTO_IP=0 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│SOCK s1 或 SOCK s2;;%&SOCK_DGRAM%;%&IPPROTO_UDP% ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※"ENVI @名称.connect=[错误名];IP;端口号",连接服务器。错误名返回错误码,0则无错。 ┃ ┃ │ │※"ENVI @名称.write=[错误名];[长度名];[数据名];[发送字节数[@偏移]][;发送标志][;IP][;端口号] ┃ ┃ │ │ "。长度名返回实际发送字节数。发送字节数默认为数据名含有的字节数。已经连接则一般不要 ┃ ┃ │ │ “IP 端口号”;且不用于SOCK_STREAM。 ┃ ┃ │ │※"ENVI @名称.read=[错误名];[长度名];[数据名];[*][接收字节数[@偏移]][;发送标志][;IP名][;端口┃ ┃ │ │ 号名]"。长度名返回实际接收字节数。接收字节数默认为数据名内存的字节数。*自动多次读取超长的┃ ┃ │ │ 数据,以读取全部。“IP名 端口号名”:返回对方IP和端口;IP名前加#则返回地址对象和对象长度 ┃ ┃ │ │※"ENVI @名称.close=[错误名]",主动释放连接。错误名返回错误码,0则无错 ┃ ┃ │ │※"ENVI @名称.sock=[错误名][;协议族][;协议类型][;协议号]",重新生成一个SOCK。 ┃ ┃ │ │※"ENVI @名称.shutdown=[错误名][;方式]",友好通知关闭连接。默认(2)双向关闭。0:接收 1:发送 ┃ ┃ │ │ 【.sock】【.close】含有该功能 ┃ ┃ │ │※"ENVI @名称.bind=[错误名];IP;端口号",服务器绑定监视IP及端口。 ┃ ┃ │ │※"ENVI @名称.listen=[错误名][连接池大小]",同时能缓冲的等待连接数,默认7。 ┃ ┃ │ │※"ENVI @名称.accept=[错误名];[监视连接fd][;IP名][;端口号名]",监视连接fd为listen的父连接号.┃ ┃ │ │ “IP名 端口号名”;返回对方IP和端口;IP名前加#,则返回地址对象和对象长度。 ┃ ┃ │ │※"ENVI @名称.fd=fd名",fd名返回连接的内部连接号,accept、select和WINDOWSAPI用。 ┃ ┃ │ │※"ENVI @名称.mem=mem名",mem名返回共享内存地址, 可用于 ENVI-mkfixdummy &&V=%mem名%:%len% ┃ ┃ │ │※"ENVI @名称.setsockopt=[错误名];[配置级别];配置项;配置数据名[;配置数据长度]" ┃ ┃ │ │ 配置级别默认为SOL_SOCKET(0xffff).配置数据长度默认为全部数据。 ┃ ┃ │ │ 常用 TEAM ENVI#$ &&v=1| ENVI @sv.setsockopt=;;%&SO_REUSEADDR%,&v //允许重新监视地址 ┃ ┃ │ │※"ENVI @名称.ioctlsocket=[错误名];;配置项;配置数据名" ┃ ┃ │ │※"ENVI @名称.DeviceIoControl=[错误名];操作;地址|*变量名;入长;地址|*变量名;出长;返名[;lpov] ┃ ┃ │ │※"ENVI @名称.select=[错误名];微秒超时;[[读返回名:]读fd1:读fd2:...][;[写返回名:]写fd1:写fd2 ┃ ┃ │ │ :...][;[异常返回名:]异常fd1:异常fd2:..]。“.”表示自身。 ┃ ┃ │ │ 读返回名起所有参数省略为等待自己有数据可读。微秒超时默认-1,为一直等待;0为检测并立即返回 ┃ ┃ │ │※"ENVI @名称.getname=[错误名];[0/1];[IP名][;端口号名]".返回本方(0默认)/对方(1)IP和端口.同上┃ ┃ │ │※"ENVI @名称.wait=[错误名][;毫秒数][;[[*]句柄2:句柄3...]]" //等待信号量,默认一直等 *全等 ┃ ┃ │ │ "ENVI @@wait=(类型)共享名;[错误名][;毫秒数][;[[*]句柄2:句柄3...]]" ┃ ┃ │ │※"ENVI @名称.setevent=[错误名][;1][;原来值名]" //发信号量。 0则完全清除event ┃ ┃ │ │ "ENVI @@setevent=(类型)共享名;[错误名][;1][;原来值名]" 类型:event/mutex/sem[aphore] ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SPIN' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SPIN [-right] [-left] [*] <按钮名称>,<形状>[,值信息][,命令参数名][,命令][,状态] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在_SUB定义的窗口内建立一个上下键按钮。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│ <按钮名称>前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │ │■按钮名称: 字符串,按钮名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■形状: 按钮位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■值信息: [伙伴EDIT名][:起始值][:终到值][:初值] 。默认:0:100:0。EDIT名优先于自动结伴。 ┃ ┃SPIN│ │■事件: 点击该按钮时执行的命令,必须是 PECMD 支持的有效命令。 ┃ ┃ │ │■命令参数名: [新值名][:按钮名][:旧值名] 。按钮名返回0/1 ,对应下按钮/上按钮。 ┃ ┃ │ │■状态: 数字,负号为禁用状态。0x10不可见。0x20回绕。0x40水平。0x80自动结伴前一控件。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│SPIN SPIN2,L32T108W300H54,edit1:-10:10,&&pos:&&id:&&oldv, CALL OnSPIN1 %&pos% %&id%,0x40 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※SPIN命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※要设置SPIN上的文本,可使用 "ENVI @SPIN名称=按钮文本" 来设置,参照 ENVI 命令的说明。 ┃ ┃ │ │※"ENVI @SPIN名称.Enable=[#]数值",0为禁用状态;1为可用状态(不响应)。#用于子线程 ┃ ┃ │ │※可用"ENVI @SPIN名称.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※可用"ENVI @SPIN名称.VAL=[当前值][:起始值][:终到值]"来设置值信息。 ┃ ┃ │ │※可用"ENVI @SPIN名称.VAL=?[当前值名][:起始值名][:终到值名]"来查询值信息。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SSTR' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SSTR [-case] <变量名><=><字符>,<数值>,<字符串> ┃ ┃SSTR├──┼──────────────────────────────────────────────┨ ┃ │功能│返回指定"子字符串"在"源字符串"左边起出现的位置。 LPOS*的别名。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'STRL' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│STRL [*] [-m|-8] <变量名><=><字符串> ┃ ┃ │ │STRL -bin <变量名>=PE变量名  //返回对象的内存字节数 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│返回指定"字符串"的长度。 *则后面是变量名,此时没有则返回-1 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │ -m/8返回多字节码/UTF8的字节数,汉字一般为2。否则为UNICODE数,汉字为1 。【-m一般不用】 ┃ ┃STRL│参数│■变量名: 用于保存命令结果的变量名; ┃ ┃ │ │■字符串: 被检测的字符串,长度不限; ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│STRL iLen=1234567890 或 STRL dLen=一二三四五 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※该命令的返回结果是Unicode字符串的长度,示例1的返回值为10,示例2的返回值为5 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SUBJ' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SUBJ [-BD[-]] [*&-]<虚拟驱动器>,[指派给虚拟驱动器的路径|?返回名] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│将路径与驱动器号关联,相当于CMD的 SUBST 命令。 -BD[-]通知盘符增加/除去 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃SUBJ│参数│■&为局部模式,其它进程很可能看不到。加载时*为持久加载;卸载时*为全部卸载,否则为最近的加载 ┃ ┃ │ │■如果省略"指派给虚拟驱动器的路径"或带-,则删除指定的虚拟驱动器。虚拟驱动器可以中文。 ┃ ┃ │ │ 路径可以是物理设备,如\Device\HarddiskVolume7 \\.\CDROM0~N \\.\TYPE0~N ┃ ┃ │ │ \\?\Volume{6467fdff-fe6d-11d5-8ba2-0000e232d2e9}\。 ┃ ┃ │ │ 一个盘符可以连续加载不同位置,看到的是最后的。不带*卸载将看到相反的过程。带-卸载为卸载后面┃ ┃ │ │ 指定目标。 汉字可以解决盘符不足,同时很私密,按需加载、卸载。一个设备可以多次加载。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│SUBJ B:,D:\My 或 SUBJ *毛:,\Device\HarddiskVolume7 或SUBJ *毛:,\Device\Harddisk0\Partition1 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※虚拟时,虚拟驱动器须是不存在的;删除虚拟驱动器时,盘符必须准确,否则可能会删除物理驱动器。┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'SWIN' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│SWIN [*] [画框名]:类名:[名称],<形状>,[内部位置][,状态] //画中画 ┃ ┃ │ │SWIN [*] -:类名:[名称],<形状>,,[状态] ┃ ┃ │ │SWIN -sub[:-#LxTyWwHh]] [类名]:[名称][,][命令行参数] //外置子窗口 -有标题 #有边框 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│属性表。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │ SWIN 命令后的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │ │■画框名: 画框的名字 ┃ ┃ │参数│■类名: 就是 _SUB定义的窗口。将据此生成一个具体的窗口实例 ┃ ┃ │ │■名称: 字符串,窗口实例名称应是唯一的,不能与其它控件名称或环境变量名称同名。默认类名前加适┃ ┃ │ │ 当数量-,表示直接提升子界面PE变量相应级别。 ┃ ┃SWIN│ │■形状: 位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■内部位置: 在画框中的位置,格式为,左上均为数值。 默认0 ┃ ┃ │ │■状态: 数字,负号为灰色不可用。0x10不可见。0x40有边框,0x80水平滚动条, 0x100垂直滚动条 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│SWIN -:Page1,L42T5W194H125 或 SWIN Swin1:Page1,L42T5W194H125,,0x1C0 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※SWIN命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※可用"ENVI @名称.Enable=数值"来设置可用状态;0为不可用状态,1为可用状态。 ┃ ┃ │ │※可用"ENVI @名称.Visible=数值"来设置可见状态;0为不可见,1为可见。 ┃ ┃ │ │※窗口实例中this指代当前实际的窗口实例,-指代父级窗口实例,不同级别用:分隔. ┃ ┃ │ │ 如:ENVI @this:Page1:ITEM.Enable=1 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'TABL' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│TABL [-hfont:头部字体大小[:字体名及修饰]] [-font:字体大小[:字体名及修饰][:头部高:头部颜色:渐┃ ┃ │ │ 变度:::字体高:字体宽:行高]] [-color:[背景色][#文字背景色][#默认文字颜色][#选择单元格颜 ┃ ┃ │ │ 色]] [-sps -cksz:打勾器大小] [*] [名称],<形状>[,格式数据][,数据][,状态] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│表格。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │ TABL 命令后的 * 表示退出代码块或函数时自动回收。-sps:列以连续的空字符间隔。选择单元颜色可 ┃ ┃ │ │ 为*,表示取默认的颜色;只能选择一行时对行选择也有效。 ┃ ┃ │参数│■名称: 字符串,窗口实例名称应是唯一的,不能与其它控件名称或环境变量名称同名。默认类名 ┃ ┃TABL│ │■形状: 位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■格式数据:表头. 各列TAB键间隔。每列『[#颜色[#背景色]][=|+]宽度:标题』。无则从数据确定列数 ┃ ┃ │ │ 。宽度前*为左对齐(默认),=为右对齐,+为居中。列颜色优先默认文字颜色。下面增加列同此。 ┃ ┃ │ │■数据:表格内容初始化数据.各列TAB键间隔。各行换行符间隔。 ┃ ┃ │ │■状态: 数字。负号为灰色禁用。0x10不可见。0x40有边框,0x80无水平滚动条,0x100无垂直滚动条, ┃ ┃ │ │ 0x200无网格线。0x400带打勾器。0x800拖拉标题调整列顺序。0x2000无标题。0x4000禁止调整宽度。 ┃ ┃ │ │ 0x10000只能选择(加亮)一行。0x40000可双击选单元。0x80000禁用行选择。0x100000勾选行着色。 ┃ ┃ │ │ 0x200000/0x400000第一/都列可含图片。"*P:W宽H高S源宽V源高X源偏Y源纵偏|[?|]文件名[>S源宽V源 ┃ ┃ │ │ X高源偏Y源纵偏|[?|]文件名Chk]%Nla%文本" ?关联[替代]勾/选 |高级方式 源宽/源高/源偏/源纵偏:┃ ┃ │ │ 负号表示倍数 0x800000/0x1000000单画横/竖线。 注意选择和勾选是2套独立方案! ┃ ┃ │ │ 1> 单击行着色:0x10000 ┃ ┃ │ │ 2> 双击选单元格着色,禁止行选择:0x40000+0x80000=0xC0000 ┃ ┃ │ │ 3> 只用勾选但不着色,禁止行选择:0x80000+0x400=0x80400 //多行勾选 ┃ ┃ │ │ 4> 只用勾选并着色,禁止行选择:0x100000+0x80000+0x400=0x180400 //多行勾选 ┃ ┃ │ │ 5> 无钩勾选并着色,禁止行选择:0x100000+0x80000=0x180000 并配合Check=XX;2 //选多行无钩 ┃ ┃ │ │ 6> 自由着色:0x80000 //ENVI @名称.color=着色 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│TABL TABL1,L42T5W194H125,50:C1%TAB%+50:C2%TAB%-50:C3,%MUI_LINE_DATA% ┃ ┃ │ │ENVI @TABL1.Sel=?.&Line,&Col ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※TABL命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※可用"ENVI @名称.Enable=数值"来设置可用状态;0为不可用状态,1为可用状态。 ┃ ┃ │ │※可用"ENVI @名称.Visible=数值"来设置可见状态;0为不可见,1为可见。 ┃ ┃ │ │※可用"ENVI @名称.Sel=行号[;值]"来选择某行。行号,列号从1开始(下同)。值0/1,默认1,0为去选择┃ ┃ │ │ ,2为乒乓选择。 ┃ ┃ │ │※可用"ENVI @名称.Sel=?[*]变量名"来获得当前选择行号。<=0没有选择。*返回全部选择行空格分隔。 ┃ ┃ │ │※可用"ENVI @名称.Sel=?.[行变量名][;列变量名]"来获得当前鼠标下单元位置。<=0无效。 ┃ ┃ │ │※可用"ENVI @名称.Sel=+行;列"来设置当前选择单元位置。<=0无效。等于鼠标双击。 ┃ ┃ │ │※可用"ENVI @名称.Sel=?+[行变量名][;列变量名]"来获得当前选择单元位置。<=0无效。 ┃ ┃ │ │※可用"ENVI @名称.Val=?*;[行数变量名][;列数变量名]"来获得当前行数和列数。 ┃ ┃ │ │※可用"ENVI @名称.Val=?*.*;变量名"来获得全部数据。行间回车换行。 ┃ ┃ │ │※可用"ENVI @名称.Val=?行号[.列号];变量名"来查询指定行/单元的内容。各列TAB键间隔(下同)。 ┃ ┃ │ │※可用"ENVI @名称.Val=行号.列号;值"来设置指定单元的内容。 ┃ ┃ │ │※可用"ENVI @名称.Val=[>]行号[*[*[*]]][#][.列号][/行高];值"来设置指定行的内容。间隔TABL开关 ┃ ┃ │ │ 指定。行号0为最后开始新增行并填入内容。有列号从此列开始填入内容。行号后*为可以多行,**[*]按┃ ┃ │ │ 需加行[格],#清除尾部多余,此时“.”可省。>为插入。 ┃ ┃ │ │※可用"ENVI @名称.Val=-[*]行号[#行数]"来删除该行或几行。*为则删除到尾部。 ┃ ┃ │ │※可用"ENVI @名称.Val=.-列号"来删除该列。 ┃ ┃ │ │※可用"ENVI @名称.Val=+;[#颜色][#背景色][=|+]列宽度:列标题"来增加列。 ┃ ┃ │ │※可用"ENVI @名称.Check=?[*]变量名"来获得当前勾选择行号。空无选择。*返回全部勾选行空格分隔。┃ ┃ │ │※可用"ENVI @名称.Check=?行号;变量名"来查询行是否勾选。 ┃ ┃ │ │※可用"ENVI @名称.Check=行号;勾选"来设定行是否已经勾选。 0:不勾选,1:勾选,2:乒乓勾选。 ┃ ┃ │ │※可用"ENVI @名称.Enable=?[*]变量名"来获得当前禁止行号。空无选择。*返回全部勾选行空格分隔。 ┃ ┃ │ │※可用"ENVI @名称.Enable=?行号;变量名"来查询行是否可用。 ┃ ┃ │ │※可用"ENVI @名称.Enable=行号;使能[-]"来设定行是否使能。 0:禁止 1:使能 2:乒乓勾选 -禁止不选 ┃ ┃ │ │※可用"ENVI @名称.Color=[行号].[列号];[颜色][;背景色]"来设定单元格/列/行/颜色。=?[行号].[列 ┃ ┃ │ │ 号];变量名;变量名; 来查询,无则返空。单元格色优先行色,行色优先列色。颜色-1为清除颜色设置。 ┃ ┃ │ │※可用"ENVI @名称.Color=列号;[颜色][;背景色][;字体大小;字体名]"来设定列颜色。 ┃ ┃ │ │ =?列号;[变量名][;变量名]来查;无则返空 ┃ ┃ │ │※可用"ENVI @名称.Color=*行号;[颜色][;背景色][/行高][;字体大小;字体名]"来设定行颜色。 ┃ ┃ │ │ =?*行号,颜色变量名,来查询,无则返空。字体大小为-则为清除字体。 ┃ ┃ │ │※可用"ENVI @名称.UPos=?[行号].[列号];L;T;R;B"来查位置。 ?*行号; ?列号; @:ICO #LABEL区 ┃ ┃ │ │※可用"ENVI @名称.Percent=[*行号]|[行号.列号];[百分比][C|R|L|F|K][:背景色][:进度色][:文本色 ┃ ┃ │ │ [:文本]" K:跳过打勾器 ┃ ┃ │ │※如需要 Val=可扩为 "Val=*:[l分行符][c分列符]:" ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'TABS' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│TABS [*] 名称,<形状>,属性页集合,[状态] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│属性表。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│ 名称前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │ │■名称: 字符串,名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃TABS│ │■形状: 按钮位置和大小,格式为,左上宽高均为数值。 ┃ ┃ │ │■属性页集合: 页1类名[:页1名称][:页1标题][:页1提示];页2类名[:页2名称][:页2标题]:[页2提示];..┃ ┃ │ │ .。类名就是_SUB定义的窗口,支持变量。页名称用于操作的实际名称,默认为其类名。子界面页名称 ┃ ┃ │ │ 前加适当数量-,表示直接提升子界面PE变量相应级别。 ┃ ┃ │ │■状态: 数字,负号为灰色不可用状态按钮、0x10不可见、4多行、0x20宽模式、0x40有边框、0x80竖排 ┃ ┃ │ │ THICKFRAME=0x40000 DLGFRAME=0x400000 BORDER=0x800000 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│TABS TABS1,L32T108W300H54,Page1:P1:title1:tip1;Page2:P2:title1:tip1 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※TABS命令一般位于_SUB命令和_END命令之间,参照_SUB、CALL命令说明。 ┃ ┃ │ │※要设置属性页上的文本:"ENVI @名称.Tilte序号=文本" ,序号从1开始。 ┃ ┃ │ │※可用"ENVI @名称.Enable=数值"来设置可用状态;0为不可用状态,非0为可用状态。 ┃ ┃ │ │※可用"ENVI @名称.Visible=数值"来设置可见状态;0为不可见,非0为可见。 ┃ ┃ │ │※可用"ENVI @名称.Select=序号"来设置选择页;>=1。 %&名称.Select% %&名称.Tilte序号% ┃ ┃ │ │※设置属性页上提示:"ENVI @名称.Tip序号=文本" 。%&名称.Tip序号% ┃ ┃ │ │※窗口实例中this指代当前实际的窗口实例,-指代父级窗口实例,不同级别用:分隔. ┃ ┃ │ │ 如:ENVI @this:P1:ITEM1.Enable=1 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'TEAM' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│TEAM[^#~+-@$%*?/\;,."'<] 命令1|命令2|命令3|命令4|命令5|......|命令n ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│按顺预执行指定命令群组中的各条命令。 ^#~+-为|的替代定界词。 <为反向 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃TEAM│参数│■一条或多条命令,多条命令之间用"|"分开。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│TEAM TEXT 载入桌面|LOGO|HIDE|SHEL %SystemRoot%\EXPLORER.EXE|WAIT 3000 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※本命令与IFEX或FIND命令不能嵌套使用。 ┃ ┃ │ │※TEAM 嵌套: 最外层用 | 分断。里面一层用 || 分断。再里面一层用 ||| 分断。。。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'TEMP' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│TEMP [[@]Delete|[$]Setting] [初始目录][,变量名] ┃ ┃ │ │TEMP @[$]Setting 新临时目录,[变量名] //静默设置 ┃ ┃ │ │TEMP [*del] [*tmpl:[前部]*[尾部]] *tmpdir [,]变量名 //生成唯一的临时目录,*del退出时自删除 ┃ ┃ │ │TEMP [*del] [*tmpl:...]*tmpfile [,]变量名[,目录变量名] //生成唯一的临时文件 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│清理用户临时文件夹或重新设用户置临时文件夹的位置。$则也设置系统变量 尾部不能含目录 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃TEMP│参数│■Delete表示清理临时目录,前导@表示不经用户确认直接清理;Setting表示重新设置临时目录的位置。┃ ┃ │ │■变量名 返回旧的或新设的临时目录。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│TEMP Delete 或 TEMP *del *tmpl:d:\A\B\CC*.txt *tmpfile ,&&FName,&&Dir ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※不要在配置文件使用本命令,必须启动到桌面使用;本命令是从注册表读取临时目录位置。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'TEXT' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│TEXT[.] [文字][#颜色][L左][T上][R右][B下][=+-][$字体大小[:字体名]][*] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在登录画面中或桌面窗口显示文字。\n换行,后缀.为原始模式不转换换行。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■文字为空则清除最近定义的矩形区内的文字;默认颜色为白色,默认坐标大致在左上角;结尾"*"表示 ┃ ┃ │ │ 显示新文字前不清除原来已显示的文字。 #LTRB=+-必须大写,顺序不能变 =右对齐+/-水平/垂直居中 ┃ ┃TEXT├──┼──────────────────────────────────────────────┨ ┃ │示例│TEXT 正在注册组件……#0xFFDDDD L4 T720 R300 B768 $20 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※本命令为多行显示文字。 ┃ ┃ │ │※字体大小默认为16(相当宋体小5号)。 ┃ ┃ │ │※指定的位置[左,上,右,下]与文字的长度和字体的大小有关。 ┃ ┃ │ │※本命令在登录期间(配置文件)中使用时将在登录画面显示文字,在Windows中(登录后)使用将在桌面窗 ┃ ┃ │ │ 口显示文字;当参数为空时会清除上一次显示的文字。文本有#LTRB但后面没有则可变量传入。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'THREAD' 'THRD' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│THREAD[&][*][+][$][#] 【-exp】 【-wait[x][ -here]】 [-link] [--st:堆栈字节数] 命令组 ┃ ┃ T ├──┼──────────────────────────────────────────────┨ ┃ H T│功能│启动一个线程,运行一命令(组)。 命令组中不要用%n的命令行参数,需要的先用ENVI转一下。 ┃ ┃ R H├──┼──────────────────────────────────────────────┨ ┃ E R│参数│■任何合法命令或命令组。&表示强制变为PE变量,能最简单变多线程。&*+$无顺序。*/-link为保持父┃ ┃ A D│ │ 子关系,包括窗口,等子线程结束,只有这样才能操作父线程(本程序已有线程安全)。默认为独立模式┃ ┃ D │ │ ,彼此没有关系。+为弃儿线程。程序到结尾是不等待该弃儿线程退出。$/-exp则提前先解释一次后面 ┃ ┃ │ │ 的命令组。-wait等待线程结束(x:不阻塞消息) -here:当前栈的孩子(只有这样才可以修改执行栈的临 ┃ ┃ │ │ 时PE变量)。-tid:TID名 -htid:TID句柄名。-waitp 进程结束前等待该线程 ┃ ┃ │ │※创建线程后%&&__LastTID%为刚创建线程的唯一ID。%&__TID% 为本线程ID。CALL @~ CALL @^ MESS- ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│THREAD CALL Hello a1 a2 a3 ┃ ┃ │ │TEAM THREAD* CALL @菜单01| CALL @WIN1 //同时开两个窗口 ┃ ┃ │ │WAIT *syscmd THREAD# MESS bbbb //#:代理方式开一线程,这些线程结束后代理退出。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'TIME' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│TIME [-t:[+]次数] [*] <定时器名称>,<定时器周期>,[定时器事件] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在_SUB定义的窗口内建立一个定时器控件。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│ <定时器名称>前的 * 表示退出代码块或函数时自动回收。 ┃ ┃ │ │■定时器名称: 字符串,定时器的名称应是唯一的,不能与其它控件名称或环境变量名称同名。 ┃ ┃ │ │■定时器周期: 数字,单位为毫秒,数值大于0表示定时器即刻工作,数值为0时表示定时器暂停工作。 ┃ ┃TIME│ │■定时器事件: 触发定时器时执行的命令,必须是 WinCMD 支持的有效命令。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│TIME Timer1,10000,FILE %TEMP%\*.* ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※TIME命令可以用在_SUB命令和_END命令之外。以执行某些命令。 ┃ ┃ │ │※环境变量 %定时器名称% 为定时器的工作状态,0为暂停,非0为已启动。 ┃ ┃ │ │※暂停定时器可用 "ENVI @定时器名=0",再启动定时器可用"ENVI @定时器名=定时器周期[<;|,>次数]" ┃ ┃ │ │※删除定时器可用 "ENVI @控件名称.*del=" (或"ENVI @定时器名=-del")。然后可重新定义 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'TIPS' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│TIPS[.*] [提示框标题],<提示框内容>,[寿命],[图标样式ID],[<@[A]提示框位置>|[托盘图标]],[#WID] ┃ ┃ │ │TIPS#[.*] [提示框标题],<提示框内容>,#[寿命],[图标样式ID],[<@[A]提示框位置>|[托盘栏图标]] ┃ ┃ │ │TIPS -dummy [?]模拟设置 //设置或清除TIPS模拟,只需1次 ?只对win10有效 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│在屏幕指定位置或托盘处显示一个气泡提示框,省略所有参数时表示清除无效托盘图标。TIPS - 清除气 ┃ ┃ │ │泡提示框。TIPS * 清除托盘栏图标和气泡提示框。后缀*为窗口私有TRAY控件;更新时[托盘栏图标]可填 ┃ ┃ │ │为**而图标保持不变。 -w:等待 -f:程序结尾强制保持 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■提示框标题: 字符串,提示框标题处显示的文字,长度不能超过64个字符,超出部分无效。 ┃ ┃ │ │■提示框内容: 字符串,提示框显示的正文内容,长度不能超过256个字符,可以用"\n"表示分行。 ┃ ┃ │ │ “.”表示不转换\n。#为必须定界符,此时提示框内容可任意字符。 ┃ ┃ │ │■提示框寿命: 数字,表示提示框持续显示的时间(毫秒),省略为默认10秒,最长显示时间由系统决定。┃ ┃ │ │■图标样式ID: 数字,默认0(无图标),1(信息图标),2(警告图标),3(错误图标),4或以上(托盘图标) ┃ ┃TIPS│ │■提示框位置: 必须带前导"@",表示在屏幕指定位置显示提示框,前导"A"表示箭型提示框,省略"A"时 ┃ ┃ │ │ 表示方型提示框,位置用LxxTyy表示(xx、yy代表数字),该参数与"托盘栏图标"不能同用┃ ┃ │ │■托盘栏图标: 格式为"[文件名][#数字]",省略"文件名"时使用 PECMD.EXE 程序资源中指定的图标。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│TIPS TT,11\n22\n33,5000,1,#1 TIPS TT,11\n22\n33,5000,2,@aL600T400 TIPS -dummy ?R*-20B*-20┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※托盘栏气泡提示框在 PECMD 结束后也结束。 ┃ ┃ │ │※屏幕提示框在 PECMD 结束后也结束,所以要保证 PECMD 生命期比提示框寿命稍长(WAIT命令延时)。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'UPNP' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│UPNP [$]<参数> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│执行 BartPE.EXE 的功能。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■前导"$" 表示显示 BartPE.EXE 的执行界面; ┃ ┃UPNP│ │■参数为 BartPE.EXE 的命令行参数。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│UPNP -pnp 或 UPNP $-pnp ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※本命令内钳新版 BartPE.EXE 执行代码,WinPE 无需 BartPE.EXE 文件也可完成 BartPE.EXE 的功能;┃ ┃ │ │※本命令只支持NT5.x系列PE且为阻塞模式执行,命令完成后才执行下一条命令;注意参数及其大小写。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'USER' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│USER <用户名>,<公司名> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置"我的电脑"右键菜单属性中的用户名和公司名。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃USER│参数│■参数为文字 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│USER mdyblog.blog.163.com,无忧启动论坛 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※半角英文",",可用全角中文","代替或变量传入。本命令仅能在配置文件中使用。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'WALL' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│WALL <壁纸文件名> ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│设置壁纸 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃WALL│参数│■参数为壁纸文件名 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│WALL %CurDrv%\外置程序\WallPage.JPG ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※支持环境变量、支持各种格式的图形文件,本命令既能在命令行中使用,也能在配置文件中使用。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'WAIT' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│WAIT [-sys[0]] [-pad] [-cont] [-ncd] [-freemem] [-][时间1(毫秒)][,量变名称] ┃ ┃ │ │ [*[pid|=tid]] [延时2(毫秒)] [-delms: ms] [-del 文件目录1] [-del ...] ... [-cmd cmd] ┃ ┃ │ │WAIT -scanall [量变名称] //返回全部256键值 的扫描表 ┃ ┃ │ │WAIT -sys[0] [开关/参数] -cmd 系统代理执行任务的命令 //并行任务方式 ┃ ┃ │ │WAIT -sys[0]cmd 系统直接代理执行的命令 //命令方式 0:只能系统级 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │ │☆-cont : 不遗漏两次调用之间的按键。此时一般先wait -0并丢弃结果。-pad:区分小键盘数字 ┃ ┃ │ │☆-ncd: 等待进程、执行命令时不转移当前目录。(多线程) ┃ ┃ │ │☆前导"-": 在指定的等待时间1内遇到任何按键即中止等待,否则直至等待时间结束; ┃ ┃ │功能│ 1.等待指定时间1后再继续执行命令。freemem:释放内存,可单用 ┃ ┃ │ │ 2.*指等待进程号为 pid 的进程 时间1 结束(无数字,*为父进程,**为祖父进程依次类推;有数字, ┃ ┃ │ │ *为该进程,**为其父进程依次类推),*-或*0或无该项为无被等待进程。然后依次删除指定文件目录┃ ┃ │ │ ,还可执行一条PECMD命令。-sys为系统(间接)代理模式,此时文件名需要绝对路径。=tid为线程号 ┃ ┃ │ │ 。$handle为句柄 -thread:等待所有子线程. ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■指定时间,单位为毫秒。pid可以16进制 ┃ ┃WAIT├──┼──────────────────────────────────────────────┨ ┃ │示例│WAIT 5000 或 WAIT 0,PKey 或 EXEC "%MyName%" WAIT * -del . 或 WAIT 0 *123 检测进程123 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※如,可在执行SHELL后等一段时间,然后执行"LOGO"命令关闭登录画面;或者执行其它操作。另外,如 ┃ ┃ │ │ 确实需在登录后运行某程序,可在启动组或"HKCU\Software\Microsoft\Windows\CurrentVersion\Run"┃ ┃ │ │ 中创建快捷方式。WAIT 不阻塞图形界面。-del模式用于清理临时文件(夹),会定期重试直到删除成功 ┃ ┃ │ │※时间1为0则暂停,任意键继续,可连续反复使用;WAIT 0/-N可检测用户按键。'A'~'Z'或'0'~'9', ┃ ┃ │ │ 直接返回,否则以0xNN的形式返回。变量名默认为PressKey。&&PressKey.Hex返回0xNN按键或-1 ┃ ┃ │ │※时间1大于0小于1:时间1*100000表示处理完积压的消息个数 ┃ ┃ │ │※WAIT -sys0cmd ENVI &::__PECMD.ONSHELL.LOG=D:\DEBUG.OnShell.LOG //设置SHELL监视LOG ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'WRIT' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │格式│WRIT[-UNICODE|-UNICODEB|-UTF8] [*fix] [*-nl] [*v] [*fv] 文件名称,[修改位置],[文件数据] ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │功能│以字符串(行)的形式修改指定文件的数据。*fix:孤立的回车也当作换行 *-nl后面不追加换行 *v:写到变┃ ┃ │ │ 量 *fv:内容是变量名 *c:先清空 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │参数│■文件名称: 合法的文件名,支持环境变量解释;-为标准输出,--为标准错误输出,忽略位置。 ┃ ┃ │ │■修改位置: 由前导"$"、"+"、"-"和行号组成,格式为"[$][+|-]<行号>"; 默认为+0。 ┃ ┃ │ │ 前导"$"表示将"文件数据"内的环境变量展开; ┃ ┃ │ │ 前导"+"表示在指定行号位置用"文件数据"加插一行; ┃ ┃WRIT│ │ 前导"-"表示删除指定行号的一行; ┃ ┃ │ │ 省略"+"和"-"时表示用"文件数据"替换指定的一行; ┃ ┃ │ │ 行号用数值表示,"0"表示操作最后一行,行号设置不合理时 WinCMD 将不作任何操作。 ┃ ┃ │ │■文件数据: 字符串,用于加插或替换文件中某行的数据,修改位置带前导"$"时支持环境变量解释。 ┃ ┃ │ │ -UNICODE -UNICODEB -UTF8指文件编码,有BOM时以BOM为准。 ┃ ┃ │ │ 其它编码:-GBK -BIG5 -UNI -UNIBE -ANSI -编码数字 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │示例│WRIT C:\BOOT.INI,+0,C:\AVLDR.NT6=Window_7_PE 或 WRIT C:\BOOT.INI,+0,C:\AVLDR.NT5=Window_PE ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│※WRIT命令只适用于修改纯文本文件,如CMD、BAT批处理文件和菜单配置文件; CONOUT$为调试终端 ┃ ┃ │ │※WRIT命令和LOOP命令必须位于单独一行,不能套在 FIND、IFEX、TEAM 命令内。 ┃ ┃ │ │※支持 \\?\Harddisk0Partition2\A.TXT \\?\HarddiskVolume5\A.TXT \\?\ImDisk0\A.TXT ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'并行符' ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ 并 │格式│ \ 命令序列 ┃ ┃ 行 │ │ 一行第一个非空字符为 \ ┃ ┃ 符 ├──┼──────────────────────────────────────────────┨ ┃ \ │功能│并入上一行,免得一行写得太长。 ┃ ┃ ├──┼──────────────────────────────────────────────┨ ┃ │备注│\ 及以前空字符,后面的一个空字符(如果有),均丢弃。 ┃ ┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'DLL' PECMD.DLL DLL版PECMD ┃ ┃ D ├──┼──────────────────────────────────────────────┨ ┃ L │格式│CALL $**c **1 PECMD.DLL,main,命令行 或 CALL $**1 PECMD.DLL,main_,命令行 ┃ ┃ L │ │rundll32.exe PECMD.DLL,main 命令行 ┃ ┣━━┷━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ WINDOWS 系统的相关资料 ┃ ┣━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'Vkeylist' 'WINDOWS按键键值表' ┃ ┠──┴──┴──────────────────────────────────────────────┨ ┃1.按键的值(虚拟键Virtual Key,是windows重新定义的(键面)键值. 对应WM_KEYDOWN的wParam) ┃ ┃ 按键 键值 键值│ 按键 键值 键值 │ 按键 键值 键值 ┃ ┃VK_LBUTTON 0x01 1 │ VK_PRINT 0x2A 42 │ VK_F9 0x78 120 ┃ ┃VK_RBUTTON 0x02 2 │ VK_EXECUTE 0x2B 43 │ VK_F10 0x79 121 ┃ ┃VK_CANCEL 0x03 3 │ VK_SNAPSHOT 0x2C 44 │ VK_F11 0x7A 122 ┃ ┃VK_MBUTTON 0x04 4 │ VK_INSERT 0x2D 45 │ VK_F12 0x7B 123 ┃ ┃VK_BACK 0x08 8 │ VK_DELETE 0x2E 46 │ VK_F13 0x7C 124 ┃ ┃VK_TAB 0x09 9 │ VK_HELP 0x2F 47 │ VK_F14 0x7D 125 ┃ ┃VK_CLEAR 0x0C 12 │ VK_0-VK_9 (0x30-0x39) 48- │ VK_F15 0x7E 126 ┃ ┃VK_RETURN 0x0D 13 │ VK_A-VK_Z (0x41-0x5A) 65- │ VK_F16 0x7F 127 ┃ ┃VK_SHIFT 0x10 16 │ VK_LWIN 0x5B 91 │ VK_F17 0x80 128 ┃ ┃VK_CONTROL 0x11 17 │ VK_RWIN 0x5C 92 │ VK_F18 0x81 129 ┃ ┃VK_MENU 0x12 18 │ VK_APPS 0x5D 93 │ VK_F19 0x82 130 ┃ ┃VK_ALT 0x12 18 │ VK_NUMPAD0 0x60 96 │ VK_F20 0x83 131 ┃ ┃VK_PAUSE 0x13 19 │ VK_NUMPAD1 0x61 97 │ VK_F21 0x84 132 ┃ ┃VK_CAPITAL 0x14 20 │ VK_NUMPAD2 0x62 98 │ VK_F22 0x85 133 ┃ ┃VK_KANA 0x15 21 │ VK_NUMPAD3 0x63 99 │ VK_F23 0x86 134 ┃ ┃VK_HANGEUL 0x15 21 │ VK_NUMPAD4 0x64 100 │ VK_F24 0x87 135 ┃ ┃VK_HANGUL 0x15 21 │ VK_NUMPAD5 0x65 101 │ VK_NUMLOCK 0x90 144 ┃ ┃VK_JUNJA 0x17 23 │ VK_NUMPAD6 0x66 102 │ VK_SCROLL 0x91 145 ┃ ┃VK_FINAL 0x18 24 │ VK_NUMPAD7 0x67 103 │ VK_LSHIFT 0xA0 160 ┃ ┃VK_HANJA 0x19 25 │ VK_NUMPAD8 0x68 104 │ VK_RSHIFT 0xA1 161 ┃ ┃VK_KANJI 0x19 25 │ VK_NUMPAD9 0x69 105 │ VK_LCONTROL 0xA2 162 ┃ ┃VK_ESCAPE 0x1B 27 │ VK_MULTIPLY 0x6A 106 │ VK_RCONTROL 0xA3 163 ┃ ┃VK_CONVERT 0x1C 28 │ VK_ADD 0x6B 107 │ VK_LMENU 0xA4 164 ┃ ┃VK_NONCONVERT 0x1D 29 │ VK_SEPARATOR 0x6C 108 │ VK_RMENU 0xA5 165 ┃ ┃VK_ACCEPT 0x1E 30 │ VK_SUBTRACT 0x6D 109 │ VK_PROCESSKEY 0xE5 229 ┃ ┃VK_MODECHANGE 0x1F 31 │ VK_DECIMAL 0x6E 110 │ VK_ATTN 0xF6 246 ┃ ┃VK_SPACE 0x20 32 │ VK_DIVIDE 0x6F 111 │ VK_CRSEL 0xF7 247 ┃ ┃VK_PRIOR 0x21 33 │ VK_F1 0x70 112 │ VK_EXSEL 0xF8 248 ┃ ┃VK_NEXT 0x22 34 │ VK_F2 0x71 113 │ VK_EREOF 0xF9 249 ┃ ┃VK_END 0x23 35 │ VK_F3 0x72 114 │ VK_PLAY 0xFA 250 ┃ ┃VK_HOME 0x24 36 │ VK_F4 0x73 115 │ VK_ZOOM 0xFB 251 ┃ ┃VK_LEFT 0x25 37 │ VK_F5 0x74 116 │ VK_NONAME 0xFC 252 ┃ ┃VK_UP 0x26 38 │ VK_F6 0x75 117 │ VK_PA1 0xFD 253 ┃ ┃VK_RIGHT 0x27 39 │ VK_F7 0x76 118 │ VK_OEM_CLEAR 0xFE 254 ┃ ┃VK_DOWN 0x28 40 │ VK_F8 0x77 119 │ VK_POWER 0xFF 255 ┃ ┃VK_SELECT 0x29 41 │ VK_LALT 0xA4 164 │ VK_RALT 0xA5 165 ┃ ┠────────────────────────────────────────────────────┨ ┃//MENU键 就是 ALT键 ┃ ┃VK_XBUTTON1 0x05 5 //Windows 2000/XP: X1 mouse button ┃ ┃VK_XBUTTON2 0x06 6 //Windows 2000/XP: X2 mouse button ┃ ┠────────────────────────────────────────────────────┨ ┃键面 按键 键值 键值 替代串1 替代串2 替代串3 替代串4 ┃ ┃;: VK_COLON 0xBA 186 ;: ; : ┃ ┃=+ VK_EQU_ADD 0xBB 187 =+ = + ┃ ┃,< VK_LITTLE 0xBC 188 ,< , < ┃ ┃-_ VK_SUB_BUTTOM 0xBD 189 -_ - _ ┃ ┃.> VK_GREAT 0xBE 190 .> . > ┃ ┃/? VK_QUESTION 0xBF 191 /? / ? ┃ ┃`~ VK_SWAVE 0xC0 192 `~ ` ~ ┃ ┃[{ VK_PRESCRAP 0xDB 219 [{ [ { VK_前中挂号 ┃ ┃\| VK_PIPE 0xDC 220 \| \ | ┃ ┃]} VK_POSTSCRAP 0xDD 221 ]} ] } VK_后中挂号 ┃ ┃'" VK_QOUTE 0xDE 222 '" ' " ┃ ┣━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'fenqutype' '分区类型操作数' ┃ ┠──┴──┴──────────────────────────────────────────────┨ ┃2.分区类型操作数,16进制 ┃ ┃ 0 空(彻底隐藏) 1c 隐藏Win95FAT32LBA 70 DiskSecure Mult bb Boot Wizard hid ┃ ┃ 1 FAT12 1e 隐藏Win95FAT16LBA 75 PC/IX be Solaris boot ┃ ┃ 2 XENIX root 24 NEC DOS 80 Old Minix c1 DRDOS/sec (FAT- ┃ ┃ 3 XENIX usr 39 Plan 9 81 Minix / old Lin c4 DRDOS/sec (FAT- ┃ ┃ 4 FAT16 <32M 3c PartitionMagic 82 Linux交换分区 c6 DRDOS/sec (FAT- ┃ ┃ 5 扩展分区 40 Venix 80286 83 Linux c7 Syrinx ┃ ┃ 6 FAT16 41 PPC PReP Boot 84 隐藏OS/2 C: da Non-FS data ┃ ┃ 7 HPFS/NTFS 42 SFS 85 Linux扩展分区 db CP/M / CTOS /HIDE_DELL ┃ ┃ 8 AIX 4d QNX4.x 86 NTFS volume set de Dell Utility ┃ ┃ 9 AIX bootable 4e QNX4.x 2nd part 87 NTFS volume set df BootIt ┃ ┃ a OS/2 Boot Manag 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access ┃ ┃ b Win95 FAT32 50 OnTrack DM 93 Amoeba/隐藏Linu e3 DOS R/O ┃ ┃ c Win95 FAT32LBA 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor ┃ ┃ e Win95 FAT16LBA 52 CP/M 9f BSD/OS eb BeOS fs ┃ ┃ f Win95扩展分区LBA 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee EFI GPT ┃ ┃10 OPUS 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/ ┃ ┃11 隐藏FAT12 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b ┃ ┃12 HIDE_FAT/Compaqdiagno 56 Golden Bow a7 NeXTSTEP f1 SpeedStor ┃ ┃14 隐藏FAT16<32M 5c Priam Edisk a8 Darwin UFS f4 SpeedStor ┃ ┃16 隐藏FAT16 61 SpeedStor a9 NetBSD f2 DOS secondary ┃ ┃17 隐藏HPFS/NTFS 63 GNU HURD or Sys ab Darwin boot fd Linux raid auto ┃ ┃18 AST SmartSleep 64 Novell Netware b7 BSDI fs fe LANstep ┃ ┃1b 隐藏Win95FAT 65 Novell Netware b8 BSDI swap ff BBT/XENIX bad blocks table ┃ ┃13 btron 2a atheOS AFS 2b Sylstor 32 NOS ┃ ┃35 JFSonos/2oreCS 7e linux 7f linu x d7 HIDE_DELL ┃ ┃dd HIDE_DELL ee 保护的MBR ef EFI 系统分区 bc ATI_SEC_ZONE ┃ ┃fd Linux RAID fe SpeedStor ┃ ┠─────────────────── G P T 分区类型GUID ─────────────────────┨ ┃EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 MS Basic Data(NTFS/FAT32/FAT16/FAT12的GUID相同) ┃ ┃024DEE41-33E7-11D3-9D69-0008C781F39F MBR partition scheme ┃ ┃C12A7328-F81F-11D2-BA4B-00A0C93EC93B EFI system ┃ ┃21686148-6449-6E6F-744E-656564454649 BIOS boot ┃ ┃E3C9E316-0B5C-4DB8-817D-F92DF00215AE Microsoft reserved ┃ ┃5808C8AA-7E8F-42E0-85D2-E1E90434CFB3 LDM metadata ┃ ┃AF9B60A0-1431-4F62-BC68-3311714A69AD LDM data ┃ ┃DE94BBA4-06D1-4D40-A16A-BFD50179D6AC Microsoft recovery ┃ ┃75894C1E-3AEB-11D3-B7C1-7B03A0000000 HP-UX data ┃ ┃E2A1E728-32E3-11D6-A682-7B03A0000000 HP-UX service ┃ ┃0FC63DAF-8483-4772-8E79-3D69D8477DE4 Linux data ┃ ┃A19D880F-05FC-4D3B-A006-743F0F84911E Linux RAID ┃ ┃0657FD6D-A4AB-43C4-84E5-0933C84B4F4F Linux swap ┃ ┃E6D6D379-F507-44C2-A23C-238F2A3DF928 LVM ┃ ┃8DA63339-0007-60C0-C436-083AC8230908 Linux reserved ┃ ┃83BD6B9D-7F41-11DC-BE0B-001560B84F0F FreeBSD boot ┃ ┃516E7CB4-6ECF-11D6-8FF8-00022D09712B FreeBSD data ┃ ┃516E7CB5-6ECF-11D6-8FF8-00022D09712B FreeBSD swap ┃ ┃516E7CB6-6ECF-11D6-8FF8-00022D09712B FreeBSD UFS ┃ ┃516E7CB8-6ECF-11D6-8FF8-00022D09712B FreeBSD vinum volume manager ┃ ┃516E7CBA-6ECF-11D6-8FF8-00022D09712B FreeBSD ZFS ┃ ┃48465300-0000-11AA-AA11-00306543ECAC Mac OS X (HFS+) ┃ ┃55465300-0000-11AA-AA11-00306543ECAC Mac OS X Apple UFS ┃ ┃6A898CC3-1DD2-11B2-99A6-080020736631 Mac OS X ZFS ┃ ┃52414944-0000-11AA-AA11-00306543ECAC Mac OS X Apple RAID ┃ ┃52414944-5F4F-11AA-AA11-00306543ECAC Mac OS X Apple RAID offline ┃ ┃426F6F74-0000-11AA-AA11-00306543ECAC Mac OS X Apple boot ┃ ┃4C616265-6C00-11AA-AA11-00306543ECAC Mac OS X Apple label ┃ ┃5265636F-7665-11AA-AA11-00306543ECAC Mac OS X Apple TV recpvery ┃ ┃6A82CB45-1DD2-11B2-99A6-080020736631 Solaris boot ┃ ┃6A85CF4D-1DD2-11B2-99A6-080020736631 Solaris root ┃ ┃6A87C46F-1DD2-11B2-99A6-080020736631 Solaris swap ┃ ┃6A8B642B-1DD2-11B2-99A6-080020736631 Solaris backup ┃ ┃6A898CC3-1DD2-11B2-99A6-080020736631 Solaris /usr ┃ ┃6A8EF2E9-1DD2-11B2-99A6-080020736631 Solaris /var ┃ ┃6A90BA39-1DD2-11B2-99A6-080020736631 Solaris /home ┃ ┃6A9283A5-1DD2-11B2-99A6-080020736631 Solaris EFI_ALTSCTR ┃ ┃6A945A3B-1DD2-11B2-99A6-080020736631 Solaris reserved1 ┃ ┃6A9630D1-1DD2-11B2-99A6-080020736631 Solaris reserved2 ┃ ┃6A980767-1DD2-11B2-99A6-080020736631 Solaris reserved3 ┃ ┃6A96237F-1DD2-11B2-99A6-080020736631 Solaris reserved4 ┃ ┃6A8D2AC7-1DD2-11B2-99A6-080020736631 Solaris reserved5 ┃ ┃49F48D32-B10E-11DC-B99B-0019D1879648 NetBSD swap ┃ ┃49F48D5A-B10E-11DC-B99B-0019D1879648 NetBSD FFS ┃ ┃49F48D82-B10E-11DC-B99B-0019D1879648 NetBSD LFS ┃ ┃49F48DAA-B10E-11DC-B99B-0019D1879648 NetBSD RAID ┃ ┃2DB519C4-B10F-11DC-B99B-0019D1879648 NetBSD concatenated ┃ ┃2DB519EC-B10F-11DC-B99B-0019D1879648 NetBSD encypted ┃ ┃53746F72-6167-11AA-AA11-00306543ECAC Apple Core Storage (i.e. Lion FileVault) partition ┃ ┃7C3457EF-0000-11AA-AA11-00306543ECAC APFS(Apple File System) ┃ ┠────────────────────────────────────────────────────┨ ┃◎用本PECMD SHOW 等加载,只要不是0和扩展分区,没有任何区别。 数值主要是给人看的,给自动化软件一个暗示。 ┃ ┃ 本人再加几个,很好理解的。 ┃ ┃15 隐藏扩展分区 1f 隐藏Win95扩展分区LBA 95 隐藏Linux扩展分区 ┃ ┣━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'disktype' '磁盘媒体类型' ┃ ┠──┴──┴──────────────────────────────────────────────┨ ┃◎有没有办法获取分区ID为0x12的分区原本的文件系统,以及剩余空间? ┃ ┃ 如果分区没有加载先用 SUBJ 命令临时加载,再用“FIND”与“IFEX”查询。如: ┃ ┃ FIND C:\=?,变量名 //查询总空间 字节 ┃ ┃ IFEX C:\=?,变量名 //查询剩余空间 字节 ┃ ┠────────────────────────────────────────────────────┨ ┃3.磁盘媒体类型: HEX DEC 磁盘媒体类型: HEX DEC 磁盘媒体类型: HEX DEC ┃ ┃ Unknown = 0x00, 0 F5_180_512 = 0x09, 9 F3_1Pt23_1024 = 0x12, 18 ┃ ┃ F5_1Pt2_512 = 0x01, 1 F5_160_512 = 0x0a, 10 F5_1Pt23_1024 = 0x13, 19 ┃ ┃ F3_1Pt44_512(1.44M)0x02, 2 RemovableMedia = 0x0b, 11 F3_128Mb_512 = 0x14, 20 ┃ ┃ F3_2Pt88_512 = 0x03, 3 FixedMedia = 0x0c, 12 F3_230Mb_512 = 0x15, 21 ┃ ┃ F3_20Pt8_512 = 0x04, 4 F3_120M_512 = 0x0d, 13 F8_256_128 = 0x16, 22 ┃ ┃ F3_720_512 = 0x05, 5 F3_640_512 = 0x0e, 14 F3_200Mb_512 = 0x17, 23 ┃ ┃ F5_360_512 = 0x06, 6 F5_640_512 = 0x0f, 15 F3_240M_512 = 0x18, 24 ┃ ┃ F5_320_512 = 0x07, 7 F5_720_512 = 0x10, 16 F3_32M_512 = 0x19 25 ┃ ┃ F5_320_1024 = 0x08, 8 F3_1Pt2_512 = 0x11, 17 ┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ PECMD2012 - 命令器的相关资料 ┃ ┣━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'' '脚本转化为一个命令行' ┃ ┠──┴──┴──────────────────────────────────────────────┨ ┃1.脚本转化为一个命令行的方法: ┃ ┃ 1>先去掉所有的注释。2>将所有的"空格;;空格" 替换为"空格;;;空格"(更多;均加一个;)。 3>将所有的换行替换为 ┃ ┃ "空格;;空格".(空格仅指0x20 ) ┃ ┃ 前面再加一个"/L "开关(表示多行,可小写),这是新的命令行参数。/L开关不传入程序当参数,第一行作程序参 ┃ ┃ 数。/l则第一行兼作命令;/L则命令从第二行开始。 ┃ ┃△在线命令行,按下 Ctrl-Enter, (在内存中)执行该脚本。点击<执行>下面的数字,可改变高度。 ┃ ┣━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'' '注释' ┃ ┠──┴──┴──────────────────────────────────────────────┨ ┃2.注释符:“;”或“`”或“//”,且在行首或开始前有一个空字符,该空字符算注释。 ┃ ┃△如何输入行尾空字符?用TEAM命令,在行尾空格后放一个|及下一命令,只放一个|也可以。或者最后部分用变量来传┃ ┃ 入;如%SPACE%。 ┃ ┃△命令行中默认是关闭注释的;而脚本中则默认开启注释。 ┃ ┣━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'' '内置与初始化脚本' ┃ ┠──┴──┴──────────────────────────────────────────────┨ ┃3.1.初始化脚本:将脚本文本直接加入到程序的资源 SCRIPTINIT\100\2052;启动时先自动执行初始化,然后正常流程┃ ┃3.2.内置脚本:脚本文本直接加入资源 SCRIPT\101\2052 启动时自动执行并退出,并把命令行参数当作脚本的参数。 ┃ ┃ 可以增加更多内置脚本。“LOAD”命令来加载使用,如:LOAD #102 A B 或 LOAD #103 ┃ ┣━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'ICOLIST' '图标编号' ┃ ┠──┴──┴──────────────────────────────────────────────┨ ┃4.图标编号 ┃ ┃ #2为自然编号,内部组号从0开始依次重新编号。(Icon Group) ┃ ┃ ##2为内部组号。(Icon Group) [省略文件名时#1和##1相反] ┃ ┃ ###2为内部帧号。(Icon) ┃ ┣━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'' '插件' ┃ ┠──┴──┴──────────────────────────────────────────────┨ ┃5.插件 ┃ ┃1》插件类型 ┃ ┃(1)脚本: #编号 WCI WCS WCE WCZ ...等格式(包括自定义的格式) ┃ ┃(2)可执行文件: EXE COM NTR NTE CMD BAT ┃ ┃(3)动态库: DLL DLX ┃ ┠────────────────────────────────────────────────────┨ ┃2》初始化 ┃ ┃ENVI &&&LoadPlugin=[基本文件名] ┃ ┃基本文件名默认为本PECMD程序名。 ┃ ┃基本文件名自动扩展为全路径 基本文件名2 ┃ ┃假定基本文件名2 为 X:\windows\system32\pecmd.exe ┃ ┃则参考路径 X:\windows\system32\pecmd ┃ ┃多次初始化只执行1次。 ┃ ┃可以放到启动脚本中自动初始化。 ┃ ┠────────────────────────────────────────────────────┨ ┃3.1》内部脚本 ┃ ┃内部资源 SCRIPT 下的编号。可以是用 CMPS 命令压缩的脚本文件。 ┃ ┃内部插件列表: 资源 INDATA\4 ┃ ┃格式: ┃ ┃LOAD: 命令名 #编号[+偏移[+长度限制]] ┃ ┃ ┃ ┃内部插件列表可以CMPS压缩 ┃ ┃ ┃ ┃LOAD: HELLOIN #100 ┃ ┃则命令为 HELLOIN ┃ ┃HELLOIN A B C ┃ ┃则执行 #100 号内置脚本,参数为" A B C" ┃ ┠────────────────────────────────────────────────────┨ ┃3.2》脚本 ┃ ┃参考路径.命令[+偏移[+长度限制]].后缀 ┃ ┃后缀:WCI WCS WCE WCZ ┃ ┃X:\windows\system32\pecmd.HELLO.WCZ ┃ ┃则命令为HELLO ┃ ┠────────────────────────────────────────────────────┨ ┃4》可执行文件 ┃ ┃参考路径.执行标志命令.后缀 ┃ ┃后缀:EXE COM NTR NTE CMD BAT ┃ ┃其中NTR、NTE就是EXE或COM改名 ┃ ┃执行标志为 =!@ 三种的组合 ┃ ┃X:\windows\system32\pecmd.=!HELLO2.EXE ┃ ┃则命令为HELLO2 ┃ ┃自动为隐藏等待方式 ┃ ┠────────────────────────────────────────────────────┨ ┃5》动态库 ┃ ┃参考路径.$命令.后缀 ┃ ┃后缀:DLL DLX ┃ ┃其中DLX就是DLL改名 ┃ ┃X:\windows\system32\pecmd.$HELLO3.DLL ┃ ┃则命令为HELLO3 ┃ ┠────────────────────────────────────────────────────┨ ┃6》PECMD专门插件库 ┃ ┃参考路径.pecmdplugin.*.PEI ┃ ┃ ┃ ┃命令名表在PEI文件内部。 ┃ ┃参考源码:PECMD_PLUGIN.插件源码.ZIP ┃ ┃ ┃ ┃执行优先顺序: ┃ ┃PECMD专门插件库 ┃ ┃#号码 ┃ ┃WCI WCS WCE WCZ ┃ ┃EXE COM NTR NTE BAT CMD ┃ ┃DLL ┃ ┃找到不再继续查找。 ┃ ┃ ┃ ┃△插件优先于没有 EXEC 的外部命令和没有 LOAD 的 WCS 脚本文件。 ┃ ┣━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'DIYSIZE' '定制与拖放' ┃ ┠──┴──┴──────────────────────────────────────────────┨ ┃△如果需要缩小占用硬盘空间,可以从资源中删除本帮助文件(比较大),不影响执行。不删除也不占用内存。 ┃ ┃△脚本拖到命令行为编辑。拖到 HELP 区为显示并执行(可压缩) ┃ ┣━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'DIYPE' 'PE定制' ┃ ┠──┴──┴──────────────────────────────────────────────┨ ┃◎PE制作关键资料 ┃ ┃取得所有权限 ┃ ┃制作PE时先加上权限管理并取得『管理员所有权限』--针对win7/win8 PE。 ┃ ┃假设PE加载到主机 Z:\PE目录。 ┃ ┃命令行执行:takeown /f "Z:\PE" /r /d y & icacls "Z:\PE" /grant administrators:F /t ┃ ┃(必须确定系统存在1、takeown; 2、icacls 两命令,没有可以从正常系统拷贝过来。) ┃ ┃*以上由于权限问题发生*.DLL或驱动无法安装注册成功的原因,多为FAT32文件系统的问题 ┃ ┃请在制作PE的时候多留意文件系统是否NTFS或是FAT32。 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ------------------------------------------------分割线----------------------------------------------------- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 关于 PECMD - WinPE Commander 的特别声明 ┃ ┣━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│ '致谢' ┃ ┃ ├──┴──────────────────────────────────────────────┨ ┃ │◎感谢 Lxl1638 公开 PECMD2.4 的源代码,PECMD2012是参考PECMD2.4,重新设计而成。 ┃ ┃ │◎感谢 Yonsm 公开 XCMD 的源代码,PECMD是在 XCMD V2.2版的基础上补充完善而成。 ┃ ┃ │◎感谢 无忧论坛网友的建议。 ┃ ┃致谢│◎感谢 无忧论坛 提供的讨论场所。 ┃ ┃ │◎感谢 qinjg8008 提供设置虚拟内存的源代码。 ┃ ┃ │◎感谢 Sherpya 公开 XPE Plugin 的全套源代码。 ┃ ┣━━┿━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ │命令│'许可' ┃ ┃ ├──┴──────────────────────────────────────────────┨ ┃ │PECMD2012 NonCopyRight 许可: ┃ ┃ │◎任何个人和组织(含商业组织)可随意免费使用,逆向工程,2进制修改... ┃ ┃ │◎如果您使用或修改了其中任何源代码,则强烈建议把使用这些源代码的项目以及项目内的所有源代码公开。 ┃ ┃ │ 对商业组织,可以不公开源代码,但必须公开开发接口及其文档。 ┃ ┃ │◎尽量保持版本的一致性。 ┃ ┃ │◎内部使用不受此限制。 ┃ ┃ │ DSystem mdyblog.blog.163.com 2012.1.22┃ ┃ ├─────────────────────────────────────────────────┨ ┃ │PECMD2.4 许可: ┃ ┃许可│◎本程序及其源代码是可以免费获取的。 ┃ ┃ │◎如果您使用或修改了其中任何源代码,则必须把使用这些源代码的项目以及项目内的所有源代码和文档公开。┃ ┃ │ 否则禁止使用本程序源代码的任何部分。 ┃ ┃ │◎您可复制、分发和传播无限制数量的软件产品,但您必须保证每一份复制、分发和传播必须是完整和真实的,┃ ┃ │ 包括所有本软件产品的软件、电子文档,版权和商标宣言。 ┃ ┃ │◎作者特申明对本软件产品之使用不提供任何保证,不对任何用户保证本软件产品适用性,不保证无故障产生;┃ ┃ │ 亦不对任何用户使用此软件所遭遇到的任何理论上的或实际上的损失承担责任。 ┃ ┃ │◎如果您使用本软件,即表示已经默认接受了此协议。 ┃ ┃ │◎要获取更多信息,请访问 WWW.YONSM.NET、BBS.WUYOU.COM。 ┃ ┃ │ ┃ ┃ │Yonsm Lxl1638 ┃ ┃ │Yonsm@163.com Lxl1638@21cn.com ┃ ┃ │WWW.Yonsm.NET BBS.WUYOU.NET ┃ ┃ │2007.1.24,杭州 07.03.01,茂名二中┃ ┗━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ DSystem mdyblog.blog.163.com ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃◎献爱心,支持捐赠PECMD、WinCMD、WimTool ┃ ┃ ┃ ┃ PECMD、WinCMD 和WimTool 是DSystem、Lxl1638黎诗婷、Yonsm等人近几年来为 Windows 预安装环境(简称 WinPE)┃ ┃所写的免费工具。PECMD 已成为国内及其它一些国家 WinPE 的登录命令和命令解释工具,WinCMD 也可作为正常系统中┃ ┃的另类命令解释器来加强和补充批处理脚本的功能。 ┃ ┃ 如果您认为这些工具在系统维护安装中有实用价值,且不嫌麻烦,您可捐赠PECMD、WinCMD 和 WimTool。 ┃ ┃ ┃ ┃黎版定制捐赠支付: 中国建设银行 广东省分行 茂名市为民分理处 6227 0031 4206 0043 437 黎诗婷 ┃ ┃黎版定制联系邮箱: lxl1638@21cn.com ┃ ┃黎版定制完成时间: 制定个人版和专业版,本人在收到邮件后利用业余时间的2个工作日内完成; ┃ ┃ 黎版制定团体版,本人在收到邮件后利用业余时间的1个工作周内完成; ┃ ┃ 黎版制定定制版,本人将根据难度来确定任务的可行性和任务的完成时间。 ┃ ┃ ┃ ┃ 感谢给 PECMD、WinCMD、WimTool 提供建议、意见和其它信息的热心网友和论坛管理,感谢您对 PECMD、WinCMD、┃ ┃WimTool 的捐赠支持,感谢每一位 PECMD、WinCMD、WimTool 的用户!祝大家新年快乐,心想事成! ┃ ┃ ┃ ┃ 您现在所使用的是免费版 PECMD2012,免费版 PECMD2012 没有任何功能限制和标记。 ┃ ┃ ┃ ┃ 黎诗婷,于2010年春节前(DSystem适当修改;988668于2012/7/13再次适度修改)┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛