无忧启动论坛

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

新版PECMD.EXE(V3.1.613.172)的BUG?

[复制链接]
跳转到指定楼层
1#
发表于 2008-6-14 22:47:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
经查看PECMD的更新历史,老九已经修正了这个变量传递的BUG,是我没有注意造成的:
V3.0.1更新:
1、修正了 FIND、IFEX 命令在某些情况下可能出现的BUG;
     FIND、IFEX命令分别用于比较环境变量和数值变量时,一律用前导"$"+带"%"的变量表示,如:
     比较字符变量:FIND $%List2%=%W800H600B32F75%,DISP W800H600B32F75
     比较数值变量:IFEX $%ErrorCount%<5,ENVI @Label1=%ErrorCount%!CALL ShutSystem


==
在以前的PECMD.INI里有这么一句
FIND $MinMode=Yes,LINK %Desktop%\加载外部配置,PECMD.EXE,LOAD \BOOT\WinPE.INI,Shell32.dll,26!TEXT|LOAD \BOOT\WinPE.INI


我按了CTRL也显示进入最小配置,可是上面这句根本没有执行,还是进入正常的的带桌面的模式。

看了PECMD的新版说明,上面这句应该是没有问题的。

   FIND <条件>,TEAM 命令1|命令2|命令3.... !TEAM 命令a|命令b|命令c....
   IFEX <条件>,TEAM 命令1|命令2|命令3.... !TEAM 命令a|命令b|命令c....

   这样在 FIND、IFEX 命令内就不会被分隔符"|"分割。即不再支持:
   FIND <条件>,命令1|命令2|命令3.... !命令a|命令b|命令c....
   IFEX <条件>,命令1|命令2|命令3.... !命令a|命令b|命令c....

   但仍支持:
   FIND <条件>,命令1!命令a
   IFEX <条件>,命令1!命令a

[ 本帖最后由 原名丢了 于 2008-6-15 07:30 AM 编辑 ]
2#
发表于 2008-6-14 23:25:46 | 只看该作者
原帖由 原名丢了 于 2008-6-14 22:47 发表
如果我搞错了,请谅解,因为我不研究PE;如果没错,请尽快解决。

在以前的PECMD.INI里有这么一句


我按了CTRL也显示进入最小配置,可是上面这句根本没有执行,还是进入正常的的带桌面的模式。

看了PE ...



你确实搞错了!这句的意思是条件成立,执行的是前面的命令,条件不成立,执行后面的命令群。正确的语句如下,注意红字部分:

FIND $MinMode=Yes,LINK %Desktop%\加载外部配置,PECMD.EXE,LOAD \BOOT\WinPE.INI,Shell32.dll#26 !TEAM TEXT|LOAD \BOOT\WinPE.INI

[ 本帖最后由 lyra 于 2008-6-14 11:28 PM 编辑 ]
回复

使用道具 举报

3#
发表于 2008-6-14 23:49:32 | 只看该作者
原帖由 lyra 于 2008-6-14 23:25 发表



你确实搞错了!这句的意思是条件成立,执行的是前面的命令,条件不成立,执行后面的命令群。正确的语句如下,注意红字部分:

FIND $MinMode=Yes,LINK %Desktop%\加载外部配置,PECMD.EXE,LOAD \BOOT\Wi ...


我晕死!刚才试过了,上面这句也不行!

仔细检查过后,我发现把 FIND 命令用 IFEX 来代替,就OK了!具体语句如下:

IFEX $MinMode=Yes,LINK %Desktop%\加载外部配置,PECMD.EXE,LOAD \BOOT\WinPE.INI,Shell32.dll#26 !TEAM TEXT|LOAD \BOOT\WinPE.INI

PS:我还顺带修正了原来语句的错误,蓝色字部分。
回复

使用道具 举报

4#
发表于 2008-6-15 00:04:46 | 只看该作者
原帖由 lyra 于 2008-6-14 23:49 发表


我晕死!刚才试过了,上面这句也不行!

仔细检查过后,我发现把 FIND 命令用 IFEX 来代替,就OK了!具体语句如下:

IFEX $MinMode=Yes,LINK %Desktop%\加载外部配置,PECMD.EXE,LOAD \BOOT\WinPE.IN ...


完蛋了,头大死了,用 IFEX 也不行!用了 IFEX 就全部按照最小模式进PE了,根本就不进标准模式,我现在也不知道错误在哪里了!
回复

使用道具 举报

5#
发表于 2008-6-15 00:33:43 | 只看该作者
靠!终于解决了!!!

只要在 PECMD.INI 配置文件中做如下修改,问题就迎刃而解!

原来的判断语句是分两段来执行的,通过一个 MinMode 变量来传递是否按了 Ctrl 键的布尔判断值,但估计这样的处理有BUG,导致判断值传递有问题。所以,我将分成两段执行的判断语句,合并成一条语句,就OK了。

=======原语句如下========

TEAM TEXT 3 秒钟内按住 Ctrl 键可进入最小配置模式……#0xEE,L20,T560,R500,B580 $20|WAIT 3000
FIND KEY=17,ENVI MinMode=Yes|Text 正在加载最小配置模式…… !Text 正在加载标准配置模式……
·
·
·
FIND $MinMode=Yes,LINK %Desktop%\加载外部配置,PECMD.EXE,LOAD \MiniPE\WinPE.INI,Shell32.dll,26!TEXT|LOAD \MiniPE\WinPE.INI

=======原语句如上========

=====修改后的语句如下=======

TEAM TEXT 3 秒钟内按住 Ctrl 键可进入最小配置模式……#0xEE,L20,T560,R500,B580 $20|WAIT 3000
FIND KEY=17,TEAM Text 正在加载最小配置模式……|LINK %Desktop%\加载外部配置,PECMD.EXE,LOAD \MiniPE\WinPE.INI,Shell32.dll#26 !TEAM Text 正在加载标准配置模式……|LOAD \MiniPE\WinPE.INI

=====修改后的语句如上=======

附上我所使用的 PECMD.INI 文件,解压后请看具体的内容。
PECMD.INI.RAR (1.25 KB, 下载次数: 137)

[ 本帖最后由 lyra 于 2008-6-15 12:40 AM 编辑 ]
回复

使用道具 举报

6#
发表于 2008-6-15 00:46:48 | 只看该作者
PECMD有更新相關指令用法...

V2.9.1更新:

3、修改了 IFEX 命令中带前导符 $ 的功能,IFEX $ 用于数值变量判断,FIND $ 用于环境变量判断;

V3.0.1更新:

1、修正了 FIND、IFEX 命令在某些情况下可能出现的BUG;
     FIND、IFEX命令分别用于比较环境变量和数值变量时,一律用前导"$"+带"%"的变量表示,如:
     比较字符变量:FIND $%List2%=%W800H600B32F75%,DISP W800H600B32F75
     比较数值变量:IFEX $%ErrorCount%<5,ENVI @Label1=%ErrorCount%!CALL ShutSystem

所以...


FIND $%MinMode%=Yes,LINK %Desktop%\加载外部配置,PECMD.EXE,LOAD \BOOT\WinPE.INI,Shell32.dll,26!TEXT|LOAD \BOOT\WinPE.INI

[ 本帖最后由 jzdai0903 于 2008-6-15 01:06 AM 编辑 ]
回复

使用道具 举报

7#
发表于 2008-6-15 03:38:17 | 只看该作者
呵呵,不管了,反正都解决了。以后有问题,以后再说。
回复

使用道具 举报

8#
 楼主| 发表于 2008-6-15 04:57:04 | 只看该作者
谢谢楼上的两位。

我是这么认为的,如果原版的PECMD执行没有问题的PECMD.INI语句,新版的PECMD在命令基本功能没变的情况下就无法执行,那么,这就是BUG,应该修正。
回复

使用道具 举报

9#
发表于 2008-6-15 05:51:42 | 只看该作者
无法向下兼容的话会给更新带来麻烦。
回复

使用道具 举报

10#
发表于 2008-6-15 05:52:41 | 只看该作者
原帖由 原名丢了 于 2008-6-15 04:57 AM 发表
谢谢楼上的两位。

我是这么认为的,如果原版的PECMD执行没有问题的PECMD.INI语句,新版的PECMD在命令基本功能没变的情况下就无法执行,那么,这就是BUG,应该修正。


不,升级更新要兼容,但还要舍弃。
大量的兼容会降低效能,既要有保留,也要有舍弃,如同32位系统舍弃了大量16位程序和16位API一样。
64位系统更无法执行16位命令了,这不是64位系统的BUG。

[ 本帖最后由 lxl1638 于 2008-6-15 05:53 AM 编辑 ]
回复

使用道具 举报

11#
 楼主| 发表于 2008-6-15 06:27:04 | 只看该作者
OK,看到了,我原先没有看到升级说明,因此提出了BUG一说,现在看来,PE紧跟PECMD就可以了,哈哈。
回复

使用道具 举报

12#
发表于 2008-6-15 13:35:53 | 只看该作者
原帖由 lxl1638 于 2008-6-15 05:52 发表


不,升级更新要兼容,但还要舍弃。
大量的兼容会降低效能,既要有保留,也要有舍弃,如同32位系统舍弃了大量16位程序和16位API一样。
64位系统更无法执行16位命令了,这不是64位系统的BUG。


完全同意,在更新后保证一定的兼容能力的情况下,更新后的合理性更重要。
回复

使用道具 举报

13#
发表于 2008-6-17 20:46:08 | 只看该作者
我同意老九新版中对find后不直接执行命令群的改动,既然有team命令就要充分利用,不然又要给这两个命令设定新的解释规则。有一段时间对find命令使用$%变量%的形式很不理解,以前版本是由$直接引用环境变量的,后来老九给我讲了pecmd的解释执行方式,我就理解了,确实与以前的不兼容了,但更科学,是可取的。

不过还有个问题,就是load的循环调用的问题:即ini文件中再调用其他ini,似乎也应该作一些规定,如是否返回等,目前好象是不行的。在ini文件中必须用pecmd load命令才能返回。
回复

使用道具 举报

14#
发表于 2008-6-18 20:04:12 | 只看该作者
学习了!有些不懂。。。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-2-3 01:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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