无忧启动论坛

标题: 有三个问题望老九解决 [打印本页]

作者: hhh333    时间: 2009-11-21 12:14
标题: 有三个问题望老九解决
1、KILL EXPLORER.EXE后,自定义系统级变量丢失的问题(这个命令多数情况下是来刷新消息区的,也可以直接提供更新消息区的功能)
2、提供检测键盘三个状态灯的命令或系统级环境变量。系统启动时,多数情况下用检测按键来作选择,等的时间长了影响不按键时的启动速度,留的时间短了很快又过去了不方便选择。如果用状态灯来作检测的话就方便了,只要开机键盘自检后就可提前改变灯的状态,选择起来得心应手。
3、这个问题较大,主要就是“!”产生歧义的问题。条件中用它来作ELSE用,EXE用来作隐藏执行用,FORX中用来作逆序用……太多了很容易出问题。我觉得至少应该先取消ELSE的功能,用另一个符号或关键字代替。

[ 本帖最后由 hhh333 于 2009-11-21 12:42 编辑 ]
作者: junyee    时间: 2009-11-21 12:36
1.3这两个问题我也碰过.
1\一般在刷新批处理后加个pecmd envi(不过容易出现手动KILL SHELL的情况),或直接在内核中集成该变量.
2\在IFEX中,!后用CALL

LZ整理的好啊.

我希望能在PECMD wincmd中增强GUI效果
如:(PECMD Load *.ini)
1\可以定义文字的颜色,字体,还有一些控件加上超链接或类似按钮的功能。
2\能显示GIF或AVI动画
3\进度条能截取复制文件时的进度.
4\能否加入选项卡?或是在一个call @XXX   后提供退出该GUI(EXIT)的功能(不是KILL 当前进程,而是退出这个函数,继续执行下面命令)
5\可否截取外部命令的变量,如在这个ini配置文件中有一句exec C:\A.cmd
A.cmd 赋与了一个变量A,接下来pecmd 中就能识别出这个变量%A%
6\Brow   命令是否能提供类似的多扩展名支持?
7、pecmd 的定时不是很精确,MS跟CPU性能有关。
8、是否考虑集成刷新IMAG 内容的功能。类似 ENVI @IMG=C:\a.jpg

9、在用ENVI一个LIST控件时,会在原有内容中追加,是否考虑给一个参数供选择。
10、exec调用外部程序时一此已经定义的字符串容易出问题,也就像LZ所说的3,最简单的,你无法用LINK作一个GHOST自动恢复的LNK(不借助其他脚本),希望可以提供: ”用  ""号圈起来的内容如果含有命令定义的字符则忽略 ”的功能。

其实还有好多如多。
Mr.老九说怕增大PECMD的体积,不利于PE核心大小的控制,那WINCMD则不会内置于PE Kernel 了吧,我不怕它体积大?
作者: mapeimapei    时间: 2009-11-21 22:54
第一个问题 是第二次使用path命令的话 上次path设置的就失效了。
作者: lxl1638    时间: 2009-11-22 10:59
原帖由 hhh333 于 2009-11-21 12:14 发表
1、KILL EXPLORER.EXE后,自定义系统级变量丢失的问题(这个命令多数情况下是来刷新消息区的,也可以直接提供更新消息区的功能)
2、提供检测键盘三个状态灯的命令或系统级环境变量。系统启动时,多数情况下用检测按键来作选择,等的时间长了影响不按键时的启动速度,留的时间短了很快又过去了不方便选择。如果用状态灯来作检测的话就方便了,只要开机键盘自检后就可提前改变灯的状态,选择起来得心应手。
3、这个问题较大,主要就是“!”产生歧义的问题。条件中用它来作ELSE用,EXE用来作隐藏执行用,FORX中用来作逆序用……太多了很容易出问题。我觉得至少应该先取消ELSE的功能,用另一个符号或关键字代替。


1、系统环境变量或用户环境变量已经写入注册表,如果KILL EXPLORER.EXE后丢失,可以:
在KILL EXPLORER.EXE接着执行无参数的ENVI来刷新,或者将无参数的ENVI写入启动项中。
2、建议改成带有窗口界面功能给用户选择,可以用MESS命令来实现,也可以设置成一个具有复杂功能的窗口界面给用户选择,
这方面台湾有位朋友比较有经验。如果用MESS命令来实现,可能好好理解和参照下面的示例:
MESS 请你选择[是]或[否]@提示#YN*10000$N
FIND $%YESNO%=YES,MESS 你选择了"是"@提示#OK!MESS 你选择了"否"@提示#OK

3、有人给你回答了,这个问题很早就有人提到,解决的方法是用CALL命令:
IFEX XXXX=YYYY,CALL AAAA!CALL BBBBB

总之,要灵活运用,运用得好PECMD可以解决很多复杂的问题;
如果每想到一样功能就增加一条命令的话,PECMD就会出现很多命令,不方便记忆,也不方便理解。
作者: hhh333    时间: 2009-11-22 21:40
原帖由 lxl1638 于 2009-11-22 10:59 发表


1、系统环境变量或用户环境变量已经写入注册表,如果KILL EXPLORER.EXE后丢失,可以:
在KILL EXPLORER.EXE接着执行无参数的ENVI来刷新,或者将无参数的ENVI写入启动项中。
2、建议改成带有窗口界面功能给 ...


老九的回答不能让我满意:

1、我在批处理中执行无参数的PECMD ENVI,后续语句中并不能马上引用丢失的变量;INI中也是这样的,因为这个进程的环境变量在程序开始时已经被初始化了。只有重新运行这个程序时,前面刷新过来的才有效。

2、无论是窗口输出选择还是按键选择都是要等待时间的。譬如有90%的情况或人是不作选择直接以默认方式进入的,有10%的情况或人是需要选择而进入的。总不能要90%的去等这10%的吧?而检测键盘灯是一个好的办法,因为机器自检键盘后,用户就可以去改变灯的状态。(实现起来并不复杂)

3、第三个虽然有变通办法,我一直也是这么用的。但为一条语句去调用子程序,有这个必要吗?

[ 本帖最后由 hhh333 于 2009-11-23 17:41 编辑 ]
作者: hhh333    时间: 2009-11-22 22:35
关于环境变量的问题我想再议一下:
先编两个文件,1.cmd和2.cmd内容如下:

rem ----1.CMD的内容------
SET >11.TXT
PECMD EVNI $MYTEST=123456789
SET >12.TXT
PECMD KILL EXPLORER.EXE
PECMD WAIT 3000
SET >13.TXT

rem ----2.CMD的内容------
SET >21.TXT
ECHO MYTEST=%MYTEST%>>21.TXT
PECMD ENVI
PECMD WAIT 3000
SET >22.TXT
ECHO MYTEST=%MYTEST%>>22.TXT

1、先执行1.cmd,则会产生一个系统变量MYTEST。

2、再执行2.cmd,22.TXT中并没有MYTEST

3、第2次执行2.cmd,这时候21/22.txt中均有MYTEST。

以上11/12/13.txt三个文件的内容永远是相同的。21/22.txt两个文件的内容也永远是相同的。

[ 本帖最后由 hhh333 于 2009-11-23 17:37 编辑 ]




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3