| 
 | 
 
接受九哥的建议,添加的命令和大侠的源程序协调了。 
记得ini文件不能用UNICODE编码的, 
改法很简单,记事本打开ini 
文件菜单,另存为ANSI的就可以用了 
 
///////////////// 
//Added by Qin 
AutoRamResize: 
XCMD.exe RAMD [-w] [-d divisor(default 3.0)] [-l minsize(default 4mb)] [-h maxsize(default maxint)] [-f minfree(default 0)] 
-w wipe ramdrive before processing it 
Sample:XCMD.exe RAMD -h 64 -f 16 
 
SetDisplay: 
XCMD.exe DISP [-t waittime(default 0)] [-w width(default current)] [-h heigth(default current)] [-b colordepth(default current)] [-f frequency(default current)] 
Sample:XCMD.exe DISP -w 800 -h 600 -b 32 -f 75 
 
SetPageFile: 
XCMD.exe PAGE [-n name(default C:\PE_PAGE.SYS)] [-m minsize(default 64)] [-x maxsize(default minsize)] 
If free memory is more than minsize, no pagefile will be set 
Sample:XCMD.exe PAGE -n C:\PE_PAGE.SYS -m 64 -x 128 
 
AutoFBWFResize: 
XCMD.exe FBWF [-d divisor(default 1.0)] [-l minsize(default 16mb)] [-h maxsize(default 256mb)] [-f minfree(default 0)] 
Make sure your fbwf service is stopped before using this function 
Sample:XCMD.exe FBWF -h 64 -f 16 
 
欢迎使用 XCMD - XPE Commander,功能强大的 XPE 命令解释工具! 
 
一、特点 
 
◎ 短小精干,运行迅速。 
◎ 支持常规的扩展设置命令。 
◎ 支持调用外部 EXE 和 DLL 函数。 
◎ 支持格式统一的命令行参数和命令文件。 
◎ 细微周到的功能支持。功能及其强大。 
◎ 完全替代系统登录程序,且登录操作完全使用 INI 命令文件配置,修改 INI 就能完全控制登录步骤。 
◎ 源代码公开,方便更改定制。在源代码中增加扩展命令非常容易。 
 
 
二、使用 
 
◎ 使用命令行参数:例如,要设置环境变量,执行“XCMD.EXE ENVI $PPPoE=OK”即可。 
 
◎ 使用命令文件:例如,“XCMD.EXE LOAD %SystemRoot%\XCMD.INI”。 
 
◎ 命令参数支持环境变量解析(如“%TEMP%\X.TXT”);命令不区分大小写;尖括号“<>”内的参数表示必须输入,方括号“[]”内的表示可以省略。 
 
◎ 通常情况下,您只需要编辑一个命令文件 XCMD.INI 任何磁盘的根目录,里面列出需要执行的命令。然后在 PE 启动的时候执行“XCMD.EXE INIT”即可。 
 
◎ 如果要替换 XPELogon 等其它 PE 登录程序,可能需要做使用一系列“REGI”命令或创建一个注册表文件做初始设置操作。当然,直接修改注册表也可以。 
 
 
三、命令 
 
■ INIT <文件路径> 
 
  ◎ 功能:初始化桌面,接管 Ctrl+Ald+Del,然后执行 LOAD 功能。 
 
  ◎ 参数:指定初始化的命令文件路径。 
 
  ◎ 示例:INIT %SystemRoot%\XCMD\XCMD.INI 
 
  ◎ 备注:此命令用于代替 XPELogon 登录系统,可以完全控制登录进度。 
 
■ LOAD <文件路径> 
 
  ◎ 功能:按顺序逐条运行命令文件中的命令。 
 
  ◎ 参数:指定文件的路径。如果省略,将自动搜索每个分区根目录中的 XCMD.INI(注意防止嵌套调用)。 
 
  ◎ 示例:LOAD 
 
  ◎ 备注: 
 
    ※ 每条命令单独一行。 
    ※ 命令是完全按顺序执行的。 
    ※ 不正确的命令或空行将忽略不计。 
    ※ 命令文件是一个 UNICODE 文本文件。 
    ※ 最后一行必须是空行,否则会被忽略。 
    ※ 注释必须单独放一行,推荐使用“//”作为注释起始。 
    ※ 如果文件路径中没有指定盘符,则自动搜索所有磁盘中的文件,如“LOAD MyPE\Config.ini”。在此情况下,在 INI 中可以使用环境变量“%CurDrv%”表示当前盘符。 
 
■ EXEC [=][!][$]<EXE 路径>[ 参数] 
 
  ◎ 功能:执行 EXE 程序。 
 
  ◎ 参数:指定 EXE 路径和参数。前导“=”表示等待执行完成;前导“!”表示以隐藏方式执行;前导“$”表示修改进程中的关机代码(挂接“ExitWindowsEx”函数)。 
 
  ◎ 示例:EXECMD =!CMD.EXE /C "DEL /Q /F %TEMP%" 
 
  ◎ 备注:SHELL 也是通过此命令来载入的。建议执行“EXEC $EXPLORER.EXE”修改 SHELL 的关机函数,这样执行“开始->关闭系统”的时候就会运行“XCMD.EXE SHUT”命令,到正确关机的目的。 
 
■ CALL <DLL 路径>[,函数名称][,[#]参数1][,[#]参数2][,[#]参数3][,[#]参数4] 
 
  ◎ 功能:调用 DLL 函数。 
 
  ◎ 参数:指定 DLL 路径、函数名称和参数。如果省略函数名称,将调用“DllRegisterServer”。参数默认为 UNICODE 字符串,如果以“#”前导则表示整数;最多支持四个函数参数。 
 
  ◎ 示例:CALL SHELL32.DLL,DllInstall,#1,I 
 
  ◎ 备注:函数必须以 STDCALL 方式导出(不明白什么意思的话,就当没任何问题)。 
 
■ REGI <HKLM|HKCU|HKCR|HKU|HKCC><\子项\>[键值][=[#]数据] 
 
  ◎ 功能:设置或删除注册表数据。 
 
  ◎ 参数: 
 
    ※ 子项              所选 ROOTKEY 下注册表项的完整名。 
 
    ※ 键值              要操作的键值。如果省略,则操作默认键值;如果为“!”且没有“=”,则用于删除整个子项。 
 
    ※ 数据              要设置的数据。如果没有“=”则删除;如果有“#”则表示 REG_DWORD 整数类型的数据,否则为字符串。 
 
  ◎ 示例:REGI HKCU\SOFTWRE\XCMD\Version=#1200 
 
  ◎ 备注:请命令比较复杂,请仔细看说明。 
 
■ ENVI [$][名称][=值] 
 
  ◎ 功能:设置或清除环境变量。 
 
  ◎ 参数:指定环境变量名称和值。前导“$”表示设置系统级环境变量,否则仅设置本程序内部使用的环境变量。如果不指定值,则删除环境变量。如果不指定名称和值,则设置以下环境变量: 
 
         Favorites      收藏夹目录 
         Desktop        桌面目录 
         StartMenu      开始菜单目录 
         Startup        启动菜单目录 
         Programs       程序菜单目录 
         SendTo         发送到目录 
         Personal       我的文档目录 
         QuickLaunch    快速启动目录 
 
  ◎ 示例:ENVI 
 
  ◎ 备注:如果使用“EXEC”执行的程序,会自动继承本程序的话境变量,换句话说,如果在命令文件中设置不带“$”的“ENVI”环境变量,对后面的“EXEC”程序中也会有效。 
 
■ DELE <文件路径> 
 
  ◎ 功能:删除文件或目录。 
 
  ◎ 参数:指定要删除的文件路径,支持通配符。 
 
  ◎ 示例:DELE %SystemRoot%\INF\*.PNF 
 
  ◎ 备注:如果以 RAMDISK 方式启动系统,可删除一些启动后无用的文件(如 2 MB 的 NTOSKRNL.EXE)来增加 RAMDISK 的可写空间。 
 
■ LINK [!]<快捷方式路径><,目标路径>[,运行参数][,图标路径][,图标索引] 
 
  ◎ 功能:创建快捷方式。 
 
  ◎ 参数: 
 
    ※ 快捷方式路径      指定要生成的快捷方式的路径,不需要“.LNK”扩展名。 
 
    ※ 目标路径          指定快捷方式的目标路径。 
 
    ※ 运行参数          目标程序运行参数。 
 
    ※ 图标路径          快捷方式图标的路径。 
 
    ※ 图标索引          快捷方式图标的在文件资源中的序号,0 为第一个图标(不填写则默认)。 
 
  ◎ 示例:LINK !%Desktop%\宽带连接,RASPPPOE.CMD,,RASDIAL.DLL,19 
 
  ◎ 备注:前导“!”表示以最小化方式启动程序,可用于执行批处理文件时最小化命令窗口。 
 
■ SEND <按键代码1>[,按键代码2][,按键代码3]... 
 
  ◎ 功能:模拟按键。 
 
  ◎ 参数:虚拟按键代码,如 VK_NUMLOCK,请参相关考编程文档。 
 
  ◎ 示例:SEND 0x12<,0x09<,0x09>,0x12> 
 
  ◎ 备注:上面的示例模拟 Alt+Tab。如果按键代码以“<”结束,则仅模拟按键按下;“>”则仅模拟按键弹起;否则模拟按下并弹起。按键代码支持 16 进制,如“SendKey 0x90”表示按下 NumLock 键。 
 
■ WAIT <时间> 
 
  ◎ 功能:等待指定时间后再继续执行命令。 
 
  ◎ 参数:指定时间,单位为毫秒。 
 
  ◎ 示例:WAIT 2000 
 
  ◎ 备注:比如,可以在执行 SHELL 后等一段时间,然后执行“LOGO”命令关闭登录画面;或者执行其它操作。另外,如果确实需要在登录完成后运行某程序,可以在启动组或“HKCU\Software\Microsoft\Windows\CurrentVersion\Run”中创建快捷方式。 
 
■ KILL <进程名称> 
 
  ◎ 功能:强制终止指定的进程。 
 
  ◎ 参数:进程名称,即 EXE 文件名(不包含路径)。 
 
  ◎ 示例:KILL WinLogon 
 
  ◎ 备注:此命令将终止与“进程名称”前部分匹配的所有进程,所以如果省略参数,可能将全部进程关闭。 
 
■ SHUT [R] 
 
  ◎ 功能:关闭计算机。 
 
  ◎ 参数:指定关闭系统或重新启动。默认为关闭系统。 
 
  ◎ 示例:SHUT 
 
  ◎ 备注:可以在“EXEC”命令的时候指定挂接“ExitWindowsEx”函数,配合此命令使用,将可以拦截所有的关闭系统调用,达到正确关闭的目的(注意,此功能是快速关机,可能不会保存所有数据)。 
 
■ DEVI <CAB 路径> 
 
  ◎ 功能:从 CAB 文件中解压缩需要的驱动程序到相关目录中。 
 
  ◎ 参数:CAB 文件路径。 
 
  ◎ 示例:DEVI %SystemRoot%\DRV.CAB 
 
  ◎ 备注: 
 
    ※ 把每个驱动单独放在一个目录中,并使用批量改名工具(如 Bulk Rename Utility),把所有的 INF 文件名添加“0”前缀,用于保证 CAB 中 INF 文件总是在当前目录的最前面。 
    ※ 解压缩后,将会自动去除 INF 文件名的前导“0”。 
    ※ INF 文件解压缩到“%SystemRoot%\INF”;SYS 文件解压缩到“%SystemRoot%\SYSTEM32\DRIVERS”DLL 文件解压缩到“%SystemRoot%\SYSTEM32”;其它文件解压缩到“%SystemRoot%”。 
    ※ 此命令使用自定的(而非系统的)驱动搜索算法,可快速解压缩可能用到的驱动程序(可能搜索到多个驱动程序),但不会安装驱动。 
    ※ 如果是 RAMDISK 方式启动,释放驱动程序后,可以删除掉 CAB 文件,以腾出空间。 
 
■ LOGO [文件路径] 
 
  ◎ 功能:显示登录画面。 
 
  ◎ 参数:图片文件路径,支持 BMP/JPG/PNG/GIF 等各式(需要 GDI+ 支持)。如果参数为空,则关闭启动画面(渐隐淡出)。 
 
  ◎ 示例:LOGO %SystemRoot%\XCMD.JPG 
 
  ◎ 备注:此命令必须在“INIT”命令载入的命令列表中才能使用,否则没有效果(因为只有 INIT 命令才会创建登录对话框)。 
 
■ TEXT [文字][#颜色][,左][,上][,右][,下] 
 
  ◎ 功能:在启动画面中显示进度文字。 
 
  ◎ 参数:文字为空则不显示文字。 
 
  ◎ 示例:TEXT 正在注册组件……#0xFFDDDD,4,745,128,768 
 
  ◎ 备注:首次显示文字的时候必须指定位置,否则不会显示。和“LOGO”命令一样,此命令必须在“INIT”命令文件中使用。 
 
■ HELP 
 
  ◎ 功能:显示帮助信息。 
 
  ◎ 参数:无。 
 
  ◎ 示例:HELP 
 
  ◎ 备注:不用命令行参数,直接执行本程序,也会显示帮助信息。 
 
 
四、致谢 
 
◎ 感谢 老九 的帮助和建议。 
◎ 感谢 无忧论坛网友 的建议。 
◎ 感谢 无忧论坛 提供的讨论场所。 
 
 
要获取更多信息,请访问 WWW.YONSM.NET 
 
 
Yonsm 
Yonsm@163.com 
WWW.Yonsm.NET 
2007.1.7,杭州 
 
[ 本帖最后由 qinjg8008 于 2007-1-10 02:20 PM 编辑 ] |   
 
 
 
 |