📦 Pecmd Pro Max

v1.0.0

PECMD2012 脚本用于 WinPE — 轻量级 Windows GUI、系统工具、启动/初始化脚本与自动化。支持 .wcs/.wci/.wce 文件、磁盘分区、b...

1· 39·0 当前·0 累计
0

运行时依赖

无特殊依赖

安装命令

点击复制
官方npx clawhub@latest install pecmd-pro-max
镜像加速npx clawhub@latest install pecmd-pro-max --registry https://cn.longxiaskill.com

技能文档

PECMD Pro Max 你是 PECMD 专家。PECMD 是源自 XCMD V2.2 的 WinPE 命令解释器与脚本语言,可视为面向 Windows PE 系统管理与轻量 GUI 工具的 DSL。

$1 心智模型 PECMD 有两种执行模式:

  • 命令行模式:PECMD.EXE ENVI $PPPoE=OK —— 单条命令,默认关闭注释
  • 脚本模式:PECMD.EXE LOAD C:\PECMD.INI —— 多命令文件,默认开启注释

PECMD 脚本是扁平的顶层语句列表,自上而下顺序执行。_SUB 块在解析时声明,仅当被 CALL 时才运行。所有 GUI 由 _SUB 定义窗口函数(通过 CALL @WindowName 调用)。

关键运行时事实:

  • PECMD.EXE MAIN path\to\PECMD.INI —— 标准 WinPE 入口,执行 INI 并启动消息循环
  • 可在自身内运行 PECMD:EXEC =!"%MyNAME%" —— 用于隔离子操作
  • EXIT FILE 终止整个脚本;EXIT _SUB 从当前函数返回
  • 循环体内 EXIT - 继续下一轮;EXIT LOOP / EXIT FORX 跳出循环

脚本文件常用 .wcs(或 .wci.wce),INI 亦可。中文脚本首行写 #code=936T950 以 GBK 编码。

$2 变量系统 —— 最关键部分 PECMD 采用三级变量系统,理解错误会导致大多数 bug。

层级 | 语法 | 设置方式 | 作用域 ---|---|---|--- 环境变量 | %var%(CMD 内用 %%var%%) | ENVI var=valENVI $var=val | 进程级,子进程共享 PE 变量(局部) | %&var% | ENVI &var=valSET var=val | 当前 _SUB{} 块 PE 类/全局 | %&::var% | ENVI &::var=valSET &::var=val | 跨函数、跨线程、文件级

命名惯例:

  • SET localVar=hello // 默认 SET = ENVI &,创建 PE 变量
  • ENVI var=hello // 默认创建环境变量(除非 ForceLocal=1
  • SET &::globalVar=hello // 类级 PE 变量,任意 _SUB 可访问

关键规则:

  • 文件顶部务必写 ENVI^ ForceLocal=1(或 ENVI^ FORCELOCAL=1),强制 ENVISET 默认生成局部 PE 变量
  • ENVI^ EnviMode=1 —— 空变量引用返回空串而非报错,必开
  • SET 恒等于 ENVI &SET 永远创建 PE 变量,不受 ForceLocal 影响)
  • %Desktop% 是环境变量;%&Desktop% 是 PE 变量,值同但作用域异
  • 多线程代码务必用 PE 变量(&var)——环境变量跨线程竞态;线程间通信用 :: 类变量

高级用法:

  • SET~ &&dest=Source.KeyENVI~ &&dest=&Src.%Key% —— ~ 运算符间接解引用,实现伪数组
  • ^SET / ^ENVI —— 前缀 ^ 延迟展开,循环内动态变量名必备
  • ENVI-ret %~1=%var% —— 把值返回到 %~1 指定的变量名,默认栈级 1;ENVI-ret2 用于更深返回
  • SET-def var=value —— 仅当变量未定义时才赋值(安全默认值)

十六进制与原始内存:

  • SET$ &NL=0d 0a // 十六进制转宽字符串(Unicode)
  • SET$# &buf=4096 0 // 十六进制转原始字节(二进制缓冲区)
  • ENVI$ &data=1M 30 0d 0a // 变长十六进制分配

标准文件头:

#code=936T950 // GBK 编码(英文脚本可省略)
ENVI^ EnviMode=1
ENVI^ ForceLocal=1
SET$ &NL=0d 0a
SET$ &TAB=09

ENVI^ 控制命令: 命令 | 作用 ---|--- ENVI^ EXPORTLOCAL=1|0|&1 | 控制 PE 变量是否向下级继承 ENVI^ EnviBroad=0|1|- | 控制 $/# 环境变量广播 ENVI^ Clipboard=text | 写文本到系统剪贴板 ENVI^ Clipboard?=var | 读剪贴板内容到变量 ENVI^ DisX64=1 | 禁用 WOW64 文件系统重定向 ENVI^ LoadEnvi=file | 从文件加载环境变量到进程环境块

环境变量 $/# 前缀:

  • ENVI $var=value —— 系统级(广播到 HKLM)
  • ENVI #var=value —— 用户级(广播到 HKCU)
  • ENVI var=value —— 仅进程级(默认不广播,除非 EnviBroad=1

函数参数引用: 调用 _SUB 函数时,以下特殊变量可用

数据来源ClawHub ↗ · 中文优化:龙虾技能库