无忧启动论坛

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

PECMD各版本中都可能存在,非致命但很有必要知道的BUG

[复制链接]
跳转到指定楼层
1#
发表于 2008-4-27 23:34:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天在调试PECMD时发现,在WINPE Plus 娱乐游戏完美版中的PECMD V2.8.1111中有一行命令,在命令行中能执行,但在INI中死活执行不了。
百思不得其解之下,把这行命令从INI中最后一行调到INI中第一行,试运行竟然通过了。
经研究后发现,在INI文件中最后一行,如果没有回车,PECMD不会执行此命令。
例:TEST.INI 中只有一行:
    HELP  (注意不加回车)
    执行 PECMD LOAD TEST.INI, 没任何反应
    修改TEST.INI
    HELP
            (加回车,在HELP后有一空行)
    执行 PECMD LOAD TEST.INI, 能显示帮助信息。
    后在本人调试的INI中也证实,在最后一行必须加回车,否则不执行此行命令。

最后,下载最新版本,V3.0.159.232测试后,也发现此问题。
因此,大胆猜测这是在各版本中都存在的一个BUG.
本人测试 V2.8.111, V3.9.159.232均有此BUG,各位有不同版本的可以按照以上办法测试一下,并回贴。
2#
发表于 2008-4-29 22:03:42 | 只看该作者
楼主是个有心人!!!!!!
回复

使用道具 举报

3#
发表于 2008-4-30 08:42:27 | 只看该作者
请lz回去仔细看pecmd的使用说明!!!!!!
回复

使用道具 举报

4#
发表于 2008-4-30 12:39:20 | 只看该作者
同意楼上,楼主在调试之前先仔细看一下pecmd的文档说明。
回复

使用道具 举报

5#
 楼主| 发表于 2008-5-1 03:35:00 | 只看该作者
原帖由 jianliulin 于 2008-4-30 08:42 AM 发表
请lz回去仔细看pecmd的使用说明!!!!!!


我看来看去, 不知道哪里说到这个问题,请说明一下,多谢
回复

使用道具 举报

6#
发表于 2008-5-1 06:04:38 | 只看该作者
真仔细呀。呵呵!不错!
回复

使用道具 举报

7#
发表于 2008-5-1 17:42:30 | 只看该作者
XCMD的出现就要求配置文件要这样写了:
文件的第一行和最后一行必须是空行或注释。

PECMD也是这样要求的,这并不算BUG,只要明白其要求就可以了,如果需要修改也是以后的事,
但要在一个 while 循环内反复判断,执行效率会有所下降。
回复

使用道具 举报

8#
发表于 2008-5-1 19:44:05 | 只看该作者
厉害、厉害,这也能发现!
回复

使用道具 举报

9#
 楼主| 发表于 2008-5-1 21:14:27 | 只看该作者
原帖由 lxl1638 于 2008-5-1 05:42 PM 发表
XCMD的出现就要求配置文件要这样写了:
文件的第一行和最后一行必须是空行或注释。

PECMD也是这样要求的,这并不算BUG,只要明白其要求就可以了,如果需要修改也是以后的事,
但要在一个 while 循环内反复 ...


原来还有这个缘由,多谢了。不过,怎么重要的信息,强烈建议写入帮助中。
以下是PECMD 3.0.159帮助中对LOAD的解释,应该把这个要求加入
┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃    │格式│LOAD <文件路径>                                                                           
┃    ├──┼──────────────────────────────────────────────
┃    │功能│按顺序逐条运行配置文件中的命令。                                                           
┃    ├──┼──────────────────────────────────────────────
┃    │参数│■指定文件名(含路径,支持环境变量)。                                                        
┃    ├──┼─────────────────────────────────────────────
┃    │示例│LOAD \外置程序\PECMD.INI                  
┃LOAD├──┼─────────────────────────────────────────────
┃    │备注│※每条命令单独一行,主流程的命令是完全按顺序执行的。不正确的命令或空行将忽略不计。
┃    │    │※支持 ANSI 和 UNICODE 格式文本文件,推荐使用 UNICODE 格式文本文件。  
┃    │    │※配置文件支持整行注释和行后注释,推荐使用"`"(键盘左上角Esc键下面的字符)作为注释起始。   
┃    │    │※在配置文件中可以使用环境变量"%CurDrv%"表示当前盘符。                                    
┃    │    │※如果文件路径第1个字符是"\",则搜索所有磁盘指定目录中的文件,如"LOAD \MyWinPE\PECMD.INI"。
┃    │    │※配置文件所在目录被设置为当前目录,这样创建快捷方式时,快捷方式目标路径可以使用相对路径。  
┃    │    │※其它的参照MAIN命令的说明。                                                               
┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
回复

使用道具 举报

10#
 楼主| 发表于 2008-5-1 21:16:00 | 只看该作者
-- 帖子发重复了,请版主删除, SORRY

[ 本帖最后由 tintinbt 于 2008-5-1 09:25 PM 编辑 ]
回复

使用道具 举报

11#
发表于 2008-5-1 22:06:23 | 只看该作者
原帖由 lxl1638 于 2008-5-1 05:42 PM 发表
XCMD的出现就要求配置文件要这样写了:
文件的第一行和最后一行必须是空行或注释。

PECMD也是这样要求的,这并不算BUG,只要明白其要求就可以了,如果需要修改也是以后的事,
但要在一个 while 循环内反复 ...


没有效率下降的说法吧,反正整个 WINPE.INI 都调入内存

在未端多加一个回车会效率下降??
回复

使用道具 举报

12#
发表于 2008-5-1 22:13:17 | 只看该作者
借此贴也请问一下,winpe.ini中太多空行是否也会造成效率下降?
回复

使用道具 举报

13#
发表于 2008-5-1 22:21:55 | 只看该作者
原帖由 hwd6 于 2008-5-1 10:13 PM 发表
借此贴也请问一下,winpe.ini中太多空行是否也会造成效率下降?


是的,不过空行要有一千万以上个才会影响效率,哈
回复

使用道具 举报

14#
发表于 2008-5-1 22:56:03 | 只看该作者
XCMD确实把整个INI装入内存,如果INI文件太大或嵌套太多还是会稍微影响性能。其实解释型的程序还是读一行执行一行(文本文件每行一般都以0DH(0D00H、000DH)、0AH(0A00H、000AH)结尾)比较省内存,每次嵌套把文件位置指针压入堆栈,酱紫可以花较小的代价实现更多重的嵌套。
无多余空格的空行占两个(4个)字节。对整体影响很小,注释太多影响反而更大。
===UNICODE格式文本文件开始为2字节标志,然后每个字符占用两字节(排版字符也是)====
PECMD还没看源代码(已下载过),不便评论。

[ 本帖最后由 netwinxp 于 2008-5-1 11:14 PM 编辑 ]
回复

使用道具 举报

15#
发表于 2008-5-1 23:20:46 | 只看该作者
原帖由 netwinxp 于 2008-5-1 10:56 PM 发表
XCMD确实把整个INI装入内存,如果INI文件太大或嵌套太多还是会稍微影响性能。其实解释型的程序还是读一行执行一行(文本文件每行一般都以0DH(0D00H、000DH)、0AH(0A00H、000AH)结尾)比较省内存,每次嵌套把文件位 ...


猫米错了,你讲的只是理论,

事实是这样的 INI最大也就 100KB,对现在几百兆上千兆的内存来说只是九牛一毛,不该省的
硬盘,大家都知道很快,可是事实上读一次数据较少(就是几字节)也要“很长”时间,所以竟量一次读多点(浪费点内存是应该的

读一行执行一行?怎么实现,每行长度又不一样 - -!

[ 本帖最后由 yyq572 于 2008-5-1 11:25 PM 编辑 ]
回复

使用道具 举报

16#
发表于 2008-5-1 23:54:05 | 只看该作者
前面的观点我有点赞同,但读一句执行一句并没有难度,因为每行都会以0DH,0AH结尾(UNICODE格式的稍有变化),所以不管长短都可以正确读取。另外磁盘缓冲及磁盘上的CACHE都会使第二次读取不会很慢(除非你的文件非常的大)。还有现在大多数是居于RAM的PE,读RAM盘和读内存的速度差别不大。

[ 本帖最后由 netwinxp 于 2008-5-1 11:59 PM 编辑 ]
回复

使用道具 举报

17#
发表于 2008-5-1 23:58:26 | 只看该作者
我大概明白了,猫米的意思是 一个字节一个字节的从硬盘读到内存
直至是 0x0d 0x0a
这样要读多少次硬盘呀,我的天呀,读好茶都凉了
回复

使用道具 举报

18#
发表于 2008-5-2 00:01:36 | 只看该作者
RAM盘并不比内存慢多少,事实上读到内存后还是要逐字节处理。另外由于磁盘缓冲、磁盘CACHE的存在,流式读磁盘大多数速度和读内存相差不是很巨大,DOS下(开smartdrv)我曾经用读磁盘直写显存并没有出现慢慢显示的情况,这还是在486级的机子上。事实上windows里面程序并不是真正能获取非常多的物理内存,很多情况下就是使用硬盘来虚拟出每个程序都有4G的平坦内存。开大的I/O缓存可以使你的大内存机子有相当不错的磁盘性能,效果比大部分所谓的优化明显多了。

[ 本帖最后由 netwinxp 于 2008-5-2 12:13 AM 编辑 ]
回复

使用道具 举报

19#
发表于 2008-5-2 01:00:54 | 只看该作者
原帖由 yyq572 于 2008-5-1 11:58 PM 发表
我大概明白了,猫米的意思是 一个字节一个字节的从硬盘读到内存
直至是 0x0d 0x0a
这样要读多少次硬盘呀,我的天呀,读好茶都凉了


文件是一次性读入内存,处理是一字节一字节地处理,直至 0x0d 0x0a(文本文件的回车换行符)为止,
暂时要求是文件的开始和最后一行需是空行或注释(必要的注释也可使文件可读性增强),当然太多的空行
或注释会使效率下降。如果难度不大,以后再取消这个要求。
回复

使用道具 举报

20#
发表于 2008-5-2 10:13:26 | 只看该作者
我觉得没必要取消这个要求,BASIC还有个BEGIN、END的呢,在帮助文件中加进该说明倒还可以。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-7-28 20:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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