无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: chenall
打印 上一主题 下一主题

grub4dos 外部命令 wenv [2010-10-17 ]

  [复制链接]
271#
发表于 2010-11-25 21:22:40 | 显示全部楼层
我目前用这样的办法解决:
echo -n ########### >> (fd1)/TXTSETUP.OEM
echo -n ########### >> (fd1)/SRS.INF

感觉是文件没有闭合(close).

这个问题比较严重,影响正常使用。
回复

使用道具 举报

272#
发表于 2010-11-26 23:54:07 | 显示全部楼层
辛苦了,怪不得15日的版本正常,后来的版本会发生递归死机问题。
FOR中空行的问题是否解决?
另外,962楼的问题怎么解释?
回复

使用道具 举报

273#
发表于 2010-11-27 00:41:41 | 显示全部楼层
test这样处理还是不太好,只是把set a=%i变成变量reset a,这样后面还得get a ]]& ...这样处理。
这个问题不大。
WENV文件大小已经达到40k,对一个外部命令来说已经够大的了。我看了下find代码,这部分占了很大空间。为何不单独分离出来处理。
-----------
新版本已经解决了死机问题,CALL调用外部命令是否处理好?
回复

使用道具 举报

274#
发表于 2010-11-27 07:49:50 | 显示全部楼层
call exec在菜单中是否有效?
我测试在菜单中无效。
回复

使用道具 举报

275#
发表于 2010-11-28 23:17:50 | 显示全部楼层
这个版本差不多稳定了就固定下来,完善一下说明。
961#我还得验证一下。
回复

使用道具 举报

276#
发表于 2010-11-29 16:23:30 | 显示全部楼层
后面添加回车/换行和二进制结束符

二进制结束符用什么表示的?是不是 >> 也是缺少这个导致文件没有结束标志。
回复

使用道具 举报

277#
发表于 2010-12-1 00:10:31 | 显示全部楼层
@tuxw:
wenv find感觉有问题

哇,自己多写了个0,sorry!

[ 本帖最后由 zhaohj 于 2010-12-1 00:23 编辑 ]

Snap1.jpg (94.41 KB, 下载次数: 65)

Snap1.jpg

Snap2.jpg (15.44 KB, 下载次数: 79)

Snap2.jpg
回复

使用道具 举报

278#
发表于 2010-12-1 08:47:31 | 显示全部楼层
现在不知道怎样查找最后一个段落的内容,如txtsetup.oem中[config.SYMMPI]这样的内容

参数-end=[ENDS]没有考虑最后段落问题

[ 本帖最后由 zhaohj 于 2010-12-1 08:53 编辑 ]
回复

使用道具 举报

279#
发表于 2010-12-1 12:17:11 | 显示全部楼层
当查找的 STRING 第一个字符是 [ 且 ENDS 只有一字符 [  时,就认定查找的是INI文件,找不到 [ 是就作最后一段处理。

这样解决可以!
回复

使用道具 举报

280#
发表于 2010-12-1 15:27:48 | 显示全部楼层
测试ok,readme.chm中call 改一下:
WENV geometry (...) 改为 WENV call geometry (...)
回复

使用道具 举报

281#
发表于 2010-12-5 07:25:25 | 显示全部楼层
尽量少使用参数,不用尽量不用
WENV reset -s=???1
==》wenv (reset  ; switch ???1)

有了key(),echar()也无用处
回复

使用道具 举报

282#
发表于 2010-12-7 07:18:15 | 显示全部楼层
确实太棒了,批处理支持参数将大大简化菜单文件,菜单模块化必将大行其道。
回复

使用道具 举报

283#
发表于 2010-12-12 12:09:03 | 显示全部楼层
批处理里面使用wenv for是否有问题。

我测试无法在批处理中使用wenv for命令

今天有空想把SRSF6中没有菜单的LST文件改成批处理文件,无法实现。下面生成(fd1)/PCI

!BAT
echo
echo
echo SRSID.TXT Driver-Pack Process...
checkrange 1 read 0x60080 && pause --wait=10 Press any key...
echo
cat --length=0 (fd1)/PCI && FAT del (fd1)/PCI
cat --length=0 (fd1)/TXT && WENV calc *0x8290=*0x8290+1024 && FAT mkfile size=* (fd1)/PCI
echo PCI$ > (fd1)/PCI
WENV for /f "eol=; tokens=1-2 delims==;" %i in ( (fd1)/TXT ) do (set a=%i ; check "$${a:0:4}"=="PCI\" ]]& set b=%j ]]] echo -n $ ]]] echo $${a}=$${b}) >> (fd1)/PCI
checkrange 1 read 0x60080 && echo display chkpci && cat --length=0x100 (fd1)/PCI && echo ...... && echo && pause --wait=10 Make txtsetup.oem , Press any key... ! FAT del (fd1)/TXT
WENV (reset a ; reset b ; reset p)
(fd2)/EXT/MAKEOEM.BAT

[ 本帖最后由 zhaohj 于 2010-12-12 12:13 编辑 ]
回复

使用道具 举报

284#
发表于 2010-12-12 12:55:49 | 显示全部楼层
呵呵,不是我偷懒,我也不知道反馈这个问题,反正是WENV FOR命令出错了。
在debug 1下打开(fd1)/PCI,看到
很显然,批处理的参数与FOR的参数冲突了。

[ 本帖最后由 zhaohj 于 2010-12-12 13:00 编辑 ]

Snap1.jpg (25.5 KB, 下载次数: 81)

Snap1.jpg
回复

使用道具 举报

285#
发表于 2010-12-12 15:41:24 | 显示全部楼层
这么快就找到问题啦,看来晚上可以测试了。
还有上次提到的写文件结束最后一句不能使用回车换行的问题,是否需要进一步的分析。
回复

使用道具 举报

286#
发表于 2010-12-12 22:30:45 | 显示全部楼层
delmod无法卸载chkpci

Snap1.jpg (65.1 KB, 下载次数: 63)

Snap1.jpg
回复

使用道具 举报

287#
发表于 2010-12-12 22:39:05 | 显示全部楼层
刚发现出了12-12-fix,问题已解决!
C大的编译器时间是否有问题,感觉少了8个小时。

--------------
delmod再加一个参数,卸载所有已加载到内存的外部命令。

[ 本帖最后由 zhaohj 于 2010-12-12 22:43 编辑 ]
回复

使用道具 举报

288#
发表于 2010-12-14 11:24:24 | 显示全部楼层
@tuxw
setrd能否改为默认加回车换行,或加一个\n,保持与ECHO默认一致。
尽量少用开关
回复

使用道具 举报

289#
发表于 2010-12-14 14:30:47 | 显示全部楼层
原帖由 tuxw 于 2010-12-14 12:26 发表
没看明白,setrd没有屏幕输出,\n加在什么地方?


呵呵,是指find后的_RD,仔细想想还是算啦,目前这样也没有问题。

下面这段:
WENV get value ]]& find -end=[ [Config.${value}] (fd1)/OEM ]]& setrd ]]] call cat (rd)+1 >> (fd1)/T.OEM
echo -n ######END######### >> (fd1)/T.OEM

当文件OEM最后段落 [Config.${value}]最后 一行没有回车换行时,setrd ]]] call cat (rd)+1竟然没输出回车换行符。
如下面128后面没回车换行
[Config.vvmscsi]
value = "", Tag, REG_DWORD, 5
value = Parameters\Device,NumberOfRequests,REG_DWORD, 128
回复

使用道具 举报

290#
发表于 2010-12-14 16:24:26 | 显示全部楼层
有时候希望保留全局变量,但中间使用了wenv reset,所以希望有清除(除全局变量外)的所有变量的方法。
也即除全局变量外的所有变量都清除。wenv reset -keep (boot ; curr)
或直接wenv (keep boot ; keep curr)
--------
当然编程者也可用按规律来设置变量,但为了把这个变量设置得有些意思,清除时又不添麻烦,上述也是合理的。
一般全局变量很少。

象上面的getdev,肯定要设置一个全局变量。

[ 本帖最后由 zhaohj 于 2010-12-14 16:29 编辑 ]
回复

使用道具 举报

291#
发表于 2010-12-14 17:44:33 | 显示全部楼层
一个奇怪的问题,下面手动执行没有问题(以前也是执行良好):
#19
title
clear
find --set-root /SRS/_LIST.TXT || configfile (fd2)/MENUSRS.LST
FAT copy /o ()/SRS/_LIST.TXT (fd2)/_LIST
## 先清除注释行
cat --length=0 (fd2)/_LIST && WENV calc a=*0x8290
map --rd-base=0xF00000
WENV call map --rd-size=${a}
WENV for /f "eol=# delims=;" %i in ( (fd2)/_LIST ) do (set a=$u,%i  ; check "\"<-"$${a}" set a=$${a!\=/}  ; check "$${a:-1}"<>"/" set a=$${a}/ ; echo $${a})  > (rd)+1
FAT copy /o (rd)+1 (fd2)/_LIST
WENV reset a
cat --locate=// (fd2)/_LIST | WENV set -t a=
WENV get a || configfile (fd2)/ERROR.LST
map --rd-base=0xF00000
map --rd-size=2048
echo color white/blue blue/yellow light-red/blue 10 > (rd)+1
echo default 2 >> (rd)+1
echo timeout 50 >> (rd)+1
echo title ==== Please Choose S&R&S Drivers Directory ==== >> (rd)+1
echo clear  >> (rd)+1
echo title  >> (rd)+1
echo clear  >> (rd)+1
WENV for /f "eol=# delims=;" %i in ( (fd2)/_LIST ) do (set a=%i ; echo title $${a:1} ; echo clear ; echo WENV set srspath=$${a:1} ; echo configfile (fd2)/LIST.LST) >> (rd)+1
clear && configfile (rd)+1

在菜单中执行,变量a消失了

_list.txt
#保证此文件放在/SRS目录下,所有驱动目录以//开头,否则...;大小写也无关。
# SRSID格式驱动
//SRS/SRSID
# SIF格式驱动
//SRS/SIF/
# F6格式OEM驱动
//SRS/OEM
# INTEL芯片组1
//SRS/INTEL/ich4-6/
# INTEL芯片组2
//SRS/INTEL/ich7-9/
# INTEL芯片组3
//SRS/INTEL/ich10/
# VIA芯片组
//SRS/VIA
# INTEL芯片组
//SRS/ATI

[ 本帖最后由 zhaohj 于 2010-12-14 18:07 编辑 ]

Snap1.jpg (92.33 KB, 下载次数: 87)

Snap1.jpg

Snap2.jpg (18.03 KB, 下载次数: 73)

Snap2.jpg
回复

使用道具 举报

292#
发表于 2010-12-14 18:22:27 | 显示全部楼层
蓝色部分改成下面就通过了:
WENV find // (fd2)/_LIST || configfile (fd2)/ERROR.LST

发现使用12-14的WENV又没有问题了,看来12-13的wenv有问题

[ 本帖最后由 zhaohj 于 2010-12-14 18:24 编辑 ]
回复

使用道具 举报

293#
发表于 2010-12-14 23:10:33 | 显示全部楼层
“-k 不能与 -s 同时使用”,-s代表什么?
回复

使用道具 举报

294#
发表于 2010-12-16 22:30:56 | 显示全部楼层
谢谢tuxw,问题已解决。
回复

使用道具 举报

295#
发表于 2010-12-23 10:02:15 | 显示全部楼层
1.  &  位与符    如 0&1=0
2.  |   位或符    如 0|1=1
3. ^  位异或符  如 0^1=1
回复

使用道具 举报

296#
发表于 2011-1-19 11:29:15 | 显示全部楼层
@tuxw:
wenv dir -c 参数是否有问题,目前文件名大小写无法区别

@chenall:
希望dir 后面文件名没大小写之分

[ 本帖最后由 zhaohj 于 2011-1-19 11:44 编辑 ]

Snap1.jpg (25.82 KB, 下载次数: 110)

Snap1.jpg
回复

使用道具 举报

297#
发表于 2011-1-19 12:31:26 | 显示全部楼层
原帖由 chenall 于 2011-1-19 12:20 发表
WENV内部都是区分大写不区分小写的..


这样就好,想不到这个规则适用在这里。
回复

使用道具 举报

298#
发表于 2011-5-19 23:07:10 | 显示全部楼层
@tuxw:
好久不见终于归队!

自从内置命令增强后,WENV已经很少用了,除了for命令。其实FOR也可以用P处理来解决。
------
debug 0|1|2,没见过debug 3 啊?
回复

使用道具 举报

299#
发表于 2011-5-19 23:27:35 | 显示全部楼层
关于P处理的单步跟踪问题:
在批处理运行之前,执行debug on来开启P处理的单步跟踪。

问题:
比如我只有一个P处理,不返回命令行的情况下,怎么达到单步跟踪?
回复

使用道具 举报

300#
发表于 2011-5-19 23:43:06 | 显示全部楼层
原帖由 zxw 于 2011-5-19 23:36 发表
应该还是debug on吧


没用的,批处理内部是无法控制调试状态的。
目前只有批处理再调用批处理。

所以,我认为P处理的单步跟踪,不要使用debug on,或采用debug 3以上比较好。

[ 本帖最后由 zhaohj 于 2011-5-19 23:46 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-20 06:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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