无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: lxl1638
打印 上一主题 下一主题

[PECMD X86 & X64 V4.0.2011.0501版] WinPE命令解释程序 & WinPE登录命令。

    [复制链接]
1441#
 楼主| 发表于 2008-6-20 14:13:53 | 只看该作者
原帖由 jzdai0903 于 2008-6-20 01:40 PM 发表
TO 老九

昨晚打完最後一篇回覆後...無憂就上不來了...

再說一下我測試的結果...

原流程...WIMMOD.CMD內....PECMD EXEC !=UserMenu.CMD不會執行

:User
PECMD EXEC !=UserMenu.CMD
PECMD LOAD %windir%\UserMenu.ini

把他改成...

:User
START /WAIT UserMenu.CMD
PECMD LOAD %windir%\UserMenu.ini

再來是UserMenu.CMD的內容...最後一段要加上EXIT

這樣就可以正常使用了...效果就會跟我那份測試ISO一樣可以正常使用...

所以可以確定這邊的 EXEC 不會執行...原因不明...


说明,EXEC 命令找不到 UserMenu.CMD。

可能的原因是,反复 LOAD 不同路径的 INI 引起了 %CurDir% 和 %CurDrv% 混乱。
在本人没有更新 PECMD 之前,你这样试试,在 LOAD 新的 INI 之前,自己记忆一下当前的 %CurDir% 和 %CurDrv%,如:

//开始
ENVI IniFileCurDir=%CurDir%
ENVI IniFileCurDrv=%CurDrv%


//其它执行代码
//.................

LOAD aaaa.INI
ENVI CurDir=%IniFileCurDir%
ENVI CurDrv=%IniFileCurDrv%


//其它执行代码
//.................

LOAD bbbb.INI
ENVI CurDir=%IniFileCurDir%
ENVI CurDrv=%IniFileCurDrv%

//其它执行代码
//.................

LOAD cccc.INI
ENVI CurDir=%IniFileCurDir%
ENVI CurDrv=%IniFileCurDrv%

//其它执行代码
//.................


即在每一个 INI 文件开始先记录好当前的 %CurDir% 和 %CurDrv%,
在这个 INI 文件的每一条 LOAD 命令之后恢复原先的 %CurDir% 和 %CurDrv%。
要注意的是每一个 INI 文件的 IniFileCurDir 和 IniFileCurDrv 的名称都不能相同

[ 本帖最后由 lxl1638 于 2008-6-20 02:17 PM 编辑 ]
回复

使用道具 举报

1442#
 楼主| 发表于 2008-6-20 14:28:57 | 只看该作者
或者改一下 WIMMOD.CMD 试试,在 WIMMOD.CMD 开头就加入:

Set CMDCommandLine=%0
FOR /F "delims=" %%I in ("%CMDCommandLine%") do set ThisPath=%%~dpI
REM ...........................
PECMD EXEC !=%ThisPath%UserMenu.CMD
REM ...........................

[ 本帖最后由 lxl1638 于 2008-6-20 02:31 PM 编辑 ]
回复

使用道具 举报

1443#
发表于 2008-6-20 15:47:24 | 只看该作者

新版的驱动安装问题

新版虽然解决了ini文件中调用其他ini的问题(原先的必须发一个pecmd load来调用,否则不能返回),但在启动时通过ini文件来调用安装IE的CMD会出错,调用安装声卡、显卡的CMD文件会卡死不动。

尝试解决:
1、IE安装问题
PUSHD %TP%\Internet Explorer
FOR /F %%i In ('DIR *.DLL /B /A-D') DO REGSVR32 /S %%i
REGSVR32 /S Flash9A.OCX
REGSVR32 /S /N /I INETCPL.CPL
IF NOT EXIST %Windir%\System32\INETCPL.CPL COPY INETCPL.CPL %Windir%\System32 /Y>NUL
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 .\IE.INF
REG DELETE HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /va /f

以上将调用PECMD的地方去掉,IE.inf文件能够正常安装

2、声卡显卡网卡驱动CMD的问题
如果将这些cmd做成桌面快捷方式,能够正常运行。但放到INI文件中去调用则不行,估计是这些CMD中也大量使用了pecmd命令,这样造成pecmd循环调用,于是产生问题。怎么办?难道要将CMD中的命令做到INI文件中?请九兄解答!!!
回复

使用道具 举报

1444#
发表于 2008-6-20 16:03:24 | 只看该作者
新的pecmd有没有配套的pelogon呢?
回复

使用道具 举报

1445#
发表于 2008-6-20 17:37:41 | 只看该作者

很多CMD文件运行不正常

不知道老九动了哪里,原先INI文件中调用CMD是正常的,新版就不行,如
配置文件中调用了regdoc.cmd文件,内容如下:
REM 设置外挂程序与其文档的关联,并调用REGDOC.INI。
PUSHD %~dp0
SET TP=%CD%
rem---------------WINRAR--------------------------------
...........
REM ----------------------MAKECAB---------------------------
....................
REM ----------------------COMMON-WB-MMC-----------------------
CALL %TP%\FREEWB\InsWB.CMD
CALL %TP%\COMMON\InsOC.CMD
CALL %TP%\MMC\InsMMC.CMD
CD %TP%
:END
EXIT

上述文件调用的InsOC.CMD文件:
PUSHD %~dp0
7z.exe x OUTER_COMMON.7z -y -aos -o"%WinDir%\System32"
SET OC=%USERPROFILE%\「开始」菜单\程序\附件
PECMD LINK %OC%\计算器,%WinDir%\System32\CALC.EXE
PECMD LINK %OC%\画图,%WinDir%\System32\MSPAINT.EXE
PECMD RUNS %SystemRoot%\SYSTEM32\internat.exe,输入法指示器
PECMD FIND internat.exe,!EXEC internat.exe
InstallIme.exe minpy.IME minpy,拼音输入法
SET OC=
EXIT

以前可以出输入法图标,现在也不出了。
回复

使用道具 举报

1446#
发表于 2008-6-20 18:01:04 | 只看该作者

彻底晕了

刚才又发现更多异常如:
winpe.ini中调用REGDOC.INI
REGDOC.INI中有如下语句:
`提取硬盘上原有 Windows XP 的部分资源的快捷方式组
EXEC !%CurDir%\XP资源\XP资源快捷方式.cmd

XP资源快捷方式.cmd中只有第一个pecmd link获得执行。(以下为Pseudo编辑的文件内容,红色字部分并未产生快捷方式)
@echo off
title XP资源快捷方式  Pseudo 2008.02.22
cd /d "%~dp0"
set P=%USERPROFILE%\「开始」菜单\程序
if not "%1"=="" PECMD FILE "%P%\XP资源"
if exist "%P%\XP资源" goto :eof
pecmd LINK !%P%\XP资源\0声明和说明,cmd.exe, /c start /max /D"%~dp0" 0声明和说明.txt,shell32.dll#23
pecmd LINK !%P%\XP资源\1全能驱动,1全能驱动.bat,,shell32.dll#44
pecmd LINK !%P%\XP资源\2全能应用,2全能应用.bat,,shell32.dll#24
pecmd LINK !%P%\XP资源\重建菜单,XP资源快捷方式.cmd,覆盖方式,shell32.dll#39

...............................


我算是彻底搞迷糊了,如果说是%CurDir%发生了变化,引起异常,但第一个pecmd link创建又成功了。九哥不会说是CMD本身的问题吧?我真的要投降了!!!


[ 本帖最后由 hhh333 于 2008-6-20 06:08 PM 编辑 ]
回复

使用道具 举报

1447#
发表于 2008-6-20 18:09:45 | 只看该作者

一个好的建议:

注释现在的//和'都是行的注释。可否增减块的注释。
格式:
/*   文字1
文字2
*/
要求:/*和*/必须在开头。
处理:和_SUB/_END一样,两者之间的任何内容都不处理。修改起来应该非常方便。
回复

使用道具 举报

1448#
发表于 2008-6-20 19:02:44 | 只看该作者
用置顶的测试版的pecmd可以启动cmd等批处理程序,但是用这个3.2版的pecmd就不行了,为什么啊?
用以前的pecmd也可以启动的
回复

使用道具 举报

1449#
发表于 2008-6-20 19:20:15 | 只看该作者

大体上知道调用失败的原因了

新的pecmd似乎造成PUSHD %~dp0失效,即不能改变当前目录到CMD所在目录。
回复

使用道具 举报

1450#
发表于 2008-6-20 20:48:26 | 只看该作者
FDRV AllDrive=
在XP都正常
在PE2.0只会回传x:
回复

使用道具 举报

1451#
发表于 2008-6-20 20:55:38 | 只看该作者
pecmd.exe如果在 ..\执行load都正常
但是如果丢在像c:\windows\system32\这种目录
用cmd在d:\底下运行pecmd load test.ini则完全没反应
这问题导致要运行菜单的地方都要放个pecmd.exe
不能c:\windows\system32\到处运行
回复

使用道具 举报

1452#
发表于 2008-6-20 22:18:01 | 只看该作者
原帖由 nasai 于 2008-6-20 08:55 PM 发表
pecmd.exe如果在 ..\执行load都正常
但是如果丢在像c:\windows\system32\这种目录
用cmd在d:\底下运行pecmd load test.ini则完全没反应
这问题导致要运行菜单的地方都要放个pecmd.exe
不能c:\windows\syste ...


LS說的沒錯...我實際在正常XP下測試結果如同LS說的...

所以我也試者放一個PECMD到我那個測試版ISO的OUTTOOL資料夾內...結果登錄LOGO後到進入桌面的運行都正常了...

所有在CMD內調用PECMD執行的指令都可正常運行...

所以猜測這應該是問題的主因...給老九參考修改...
回复

使用道具 举报

1453#
发表于 2008-6-20 23:03:17 | 只看该作者
我用最新版本的PECMD,在调用REGDOC.CMD也是出问题了,执行过程中出错了,以致连声卡、显卡、网卡不能安装(说明一下,我用的是YYQ572的Byebye修改版,注册表已做了相应修改)。
回复

使用道具 举报

1454#
发表于 2008-6-20 23:23:32 | 只看该作者
LS的試試放一個PECMD到你 REGDOC.CMD的那個目錄裡面...至於註冊表就照你原本的就好了...

然後再測試一次吧...
回复

使用道具 举报

1455#
 楼主| 发表于 2008-6-21 01:09:44 | 只看该作者
PECMD.EXE 的工作目录是 INI 文件所在的目录,如果要被 EXEC 命令启动的其它命令(如 CMD)不与 INI 同目录,EXEC 将会找不到这些要被启动的CMD批处理,这个时候要给出 CMD批处理的全路径了
另一种情况更复杂,就在 INI 里通过 LOAD 命令载入另一个目录的 INI 时,PECMD.EXE 的当前工作目录将会设置到最后一个被LOAD载入的INI目录,正是由于这个版本支持反复加载不同目录的INI,引起了PECMD.EXE当前工作目录的混乱。

所以在 PECMD.EXE 更新之前,大家要记住上红色的文字,并适当修改 CMD 代码,把 CMD 批处理的工作目录设置到 CMD 所在目录

[ 本帖最后由 lxl1638 于 2008-6-21 01:14 AM 编辑 ]
回复

使用道具 举报

1456#
发表于 2008-6-21 05:49:24 | 只看该作者
原帖由 lxl1638 于 2008-6-21 01:09 AM 发表
PECMD.EXE 的工作目录是 INI 文件所在的目录,如果要被 EXEC 命令启动的其它命令(如 CMD)不与 INI 同目录,EXEC 将会找不到这些要被启动的CMD批处理,这个时候要给出 CMD批处理的全路径了。
另一种情况更复杂, ...


>>>pecmd工作目录设置到最后一个调用的ini文件所在的目录应该是正确的,但也应该允许INI文件中调用的CMD命令改变当前工作目录,况且,CMD文件还可能调用其他CMD文件,有很多CMD的第一条语句就是pushd %~dp0,这是用来将当前目录设置到CMD所在的目录。如果这第一条命令不成功则会出现各种异常
回复

使用道具 举报

1457#
发表于 2008-6-21 06:29:53 | 只看该作者
对九兄的这个PECMD有几个建议:

1、请尽快设定LOAD和EXEC执行规则(或者说是恢复原规则)。
2、WAIT命令等待按键时应该一旦有按键就往下执行,而不要一直等待原设定秒数。就象NTLDR菜单设定30秒,如果回车后它还要等30秒肯定是不符合操作习惯的。
3、帮助信息也应该有一个首字母定位的功能,譬如我要查WAIT命令按一个W就可以定位到,而不要反复pagedown

关于当前目录可以采取如下方案,看是否可行。
     A.INI中一旦碰到LOAD B.INI,则马上将A.INI的%CURDIR% PUSH到堆栈中,再将当前目录更改到B.INI所在目录,保证B.INI执行第一条语句时,当前目录在B.INI,如果B.INI又调用C.INI,则又将B.INI的当前目录PUSH到堆栈中,其他以此类推……。当LOAD所调用的INI执行完要执行LOAD后的下一条语句之前执行一次POP堆栈操作,这样就可保证各个INI执行的语句都在它所在的目录。
    不管哪个INI文件中有EXEC到其他CMD或BAT都由这些CMD去维护它自己的当前目录,就象从桌面执行快捷方式一样。
回复

使用道具 举报

1458#
 楼主| 发表于 2008-6-21 06:42:04 | 只看该作者
对工作目录处理问题,本人会完善它,但 WAIT 命令不好办,因为有时确实需要进行延时操作,也是使用 WAIT 命令的,如果用户不小心碰到键盘就中止延时可能会产生意思不同的事情。

暂时你还是用 WAIT 0 代替,WAIT 0 遇到按键就会中止。
回复

使用道具 举报

1459#
发表于 2008-6-21 06:56:32 | 只看该作者
原帖由 lxl1638 于 2008-6-21 06:42 AM 发表
对工作目录处理问题,本人会完善它,但 WAIT 命令不好办,因为有时确实需要进行延时操作,也是使用 WAIT 命令的,如果用户不小心碰到键盘就中止延时可能会产生意思不同的事情。

暂时你还是用 WAIT 0 代替,W ...


>>可否这样来解决:
1、WAIT 0------无限期等待直到有按键。
2、WAIT XXXX---------等待固定XXXX不管是否有按键。
3、WAIT -XXXX--------等待固定XXXX,但一旦有按键就往下执行。

以上分别对应wait后的参数=0,>0,<0的情况,解释起来也是很好实现的,原来的代码也不要改。增加的功能实际上就是以上2的功能加上1的功能。

[ 本帖最后由 hhh333 于 2008-6-21 07:10 AM 编辑 ]
回复

使用道具 举报

1460#
 楼主| 发表于 2008-6-21 08:00:08 | 只看该作者
原帖由 hhh333 于 2008-6-21 06:56 AM 发表


>>可否这样来解决:
1、WAIT 0------无限期等待直到有按键。
2、WAIT XXXX---------等待固定XXXX不管是否有按键。
3、WAIT -XXXX--------等待固定XXXX,但一旦有按键就往下执行。

以上分别对应wait后 ...


好吧,就按你的意思去做,加入前导符"-",也兼容以前的语法。
回复

使用道具 举报

1461#
发表于 2008-6-21 08:13:36 | 只看该作者
我在前述的帖子中说到:“新的pecmd似乎造成PUSHD %~dp0失效,即不能改变当前目录到CMD所在目录。”
九兄看了吗?解决了吗?这可是个大问题,会造成很多文件运行失败!!!极待解决!!!我一直在等啊…………
回复

使用道具 举报

1462#
 楼主| 发表于 2008-6-21 08:41:47 | 只看该作者
原帖由 hhh333 于 2008-6-21 08:13 AM 发表
我在前述的帖子中说到:“新的pecmd似乎造成PUSHD %~dp0失效,即不能改变当前目录到CMD所在目录。”
九兄看了吗?解决了吗?这可是个大问题,会造成很多文件运行失败!!!极待解决!!!我一直在等啊…………


你测试一下这个,如果没有前面提到的两个问题(当前工作目录和WAIT),本人再看看有没有可精简的代码,就公布到1楼。

也请台湾兄弟测试一下。

PECMD-V3.2.621.255测试.RAR

85.88 KB, 下载次数: 44, 下载积分: 无忧币 -2

回复

使用道具 举报

1463#
发表于 2008-6-21 09:32:42 | 只看该作者
用了3.2.621.255测试,不能登录了,其他任何版本无此问题
回复

使用道具 举报

1464#
发表于 2008-6-21 10:18:38 | 只看该作者
今天趕者出門...所以只簡單測試一下而已...

老九的新版本簡單測試後...應該是沒有之前說的問題了...測試版ISO都沒做任何更改下...已可以正常運作...

至於其他的新功能或是原本的舊功能...我星期天晚上再來做詳細測試...感謝老九...





[ 本帖最后由 jzdai0903 于 2008-6-21 10:20 AM 编辑 ]
回复

使用道具 举报

1465#
发表于 2008-6-21 11:09:55 | 只看该作者
原帖由 lxl1638 于 2008-6-21 08:41 AM 发表


你测试一下这个,如果没有前面提到的两个问题(当前工作目录和WAIT),本人再看看有没有可精简的代码,就公布到1楼。

也请台湾兄弟测试一下。


>>>测试了,
1、出现了“注册类或创建窗口失败”不能登录,因此调用其他CMD异常的情况没办法测试。
2、但按键可以正常工作了:我的程序是启动时3秒内按Ctrl,则调出模式选择窗口,用WAIT -3000,轻轻一按Ctrl键模式选择窗口就跳出来了,比以前方便多了,以前总让人觉得按键不灵!!!
回复

使用道具 举报

1466#
发表于 2008-6-21 11:42:32 | 只看该作者
原帖由 jzdai0903 于 2008-6-21 10:18 AM 发表
今天趕者出門...所以只簡單測試一下而已...

老九的新版本簡單測試後...應該是沒有之前說的問題了...測試版ISO都沒做任何更改下...已可以正常運作...

至於其他的新功能或是原本的舊功能...我星期天晚上再來 ...

这个PE很好,能提供下载么?
回复

使用道具 举报

1467#
发表于 2008-6-21 11:45:42 | 只看该作者
PECMD-V3.2.621.255
FDRV AllDrive= 在pe2.0已经正常取得所有盘符
pecmd.exe也可以放在c:\windows\system32\在任意目录load
非常感谢老九做的努力
回复

使用道具 举报

1468#
发表于 2008-6-21 12:58:20 | 只看该作者
//取得%YESNO%
MESS TEST@TEST #YN *10000 $N

//这行按是%YESNO%=YSE , 按否%YESNO%=NO 确认回报没错
IFEX $YESNO=YES,MESS %YESNO% @TEST #OK,,0!MESS %YESNO% @TEST #OK,,0

//可是用了这行,不管我选是或选否,都只会跳出MESS YES @TEST #OK,,0
//不管怎试!MESS NO @TEST #OK,,0始终都不被执行
//所以这一版IFEX 变没作用了?
IFEX $YESNO=YES,MESS YES @TEST #OK,,0!MESS NO @TEST #OK,,0
回复

使用道具 举报

1469#
 楼主| 发表于 2008-6-21 13:08:40 | 只看该作者
3.2.621.255版更新:
1、修正的 PECMD.EXE 载入多个 INI 文件时引起的当前工作目录出现的混乱;
2、补充了 WAIT 命令的功能;
3、更正了说明中的个别错字,同时补充了 WAIT 命令的说明;
4、附件内有3个文件:
PECMD.EXE              PECMD 的主程式
COMPRESS.EXE        用于 PECMD.EXE 语言本地化的帮助说明压缩工具
未命名.PNG              PECMD.EXE 帮助说明在资源中的位置图示

5、COMPRESS.EXE 不能用来修改简体中文系统中的帮助说明,只能用来修改非简体中文系统中的说明,
     修改时先用 COMPRESS.EXE 对.TXT说明文件压缩,再将压缩后的文件小心替换资源中的数据即可。

[ 本帖最后由 lxl1638 于 2008-6-21 01:10 PM 编辑 ]
回复

使用道具 举报

1470#
发表于 2008-6-21 14:40:08 | 只看该作者
原帖由 lwf8888 于 2008-6-20 06:09 PM 发表
注释现在的//和'都是行的注释。可否增减块的注释。
格式:
/*   文字1
文字2
*/
要求:/*和*/必须在开头。
处理:和_SUB/_END一样,两者之间的任何内容都不处理。修改起来应该非常方便。



期待。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-11-8 05:16

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表