无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
121#
发表于 2011-1-11 17:26:39 | 显示全部楼层
原帖由 zhaohj 于 2011-1-11 17:13 发表
死机问题1-11版本已经解决。
set oempath && WENV set oempath=${oempath!\=/}
set oempath && set srspath=%srspath%%oempath%/ && echo set srspath=%srspath% >> (fd2)/ENVI.BAT


有一点需要注意一下上面的语句在批处理中执行
%srspath%%oempath%/

因为批处理执行前会先替换%%为一个 %.然后再丢给命令处理器。
所以上面会被处理成
%srspath%oempath%/
回复

使用道具 举报

122#
发表于 2011-1-12 08:25:17 | 显示全部楼层
原帖由 zhaohj 于 2011-1-11 20:19 发表


呵呵,改成%srspath%%%oempath%/  问题解决。

下面问题怎么解决?


pxe detect放在菜单最前面。

暂时无解,我也发现过几次,但是没有找到原因,看代码都是正常的。
回复

使用道具 举报

123#
发表于 2011-1-12 10:59:18 | 显示全部楼层
原帖由 zhaohj 于 2011-1-12 09:49 发表
昨天在测试SRSF6过程中,其中的一个批处理makeinf.bat使用了0x40000内存地址:
map --rd-base=0x40000 && map --rd-size=0x800
...
fat copy (rd)+1 (fd1)/SRS.INF
出现死机,后来改成:
fat mkfile size=2 ...


现在没有太多时间,你自己跟踪调试一下吧。你自己写的批处理对流程肯定比较清楚。

现在批处理用debug on调试很方便的。
回复

使用道具 举报

124#
发表于 2011-1-12 16:04:03 | 显示全部楼层
原帖由 zhaohj 于 2011-1-12 11:21 发表
奇怪,可能是1-10版本的问题,1-11版本问题无法重现。

批处理中,debug on后,下面这两句:
echo !BAT > (fd2)/DRIVERS.BAT
WENV for /f "tokens=3 delims==," %i in ( (fd1)/SYSINF ) do (set a=$u,%i ;  ...


debug off就没有显示了。
回复

使用道具 举报

125#
发表于 2011-1-12 17:13:49 | 显示全部楼层
原帖由 zhaohj 于 2011-1-12 16:45 发表
C大有否计划扩展set、if功能?
set a=$u,%a%  ...
set /p a=$u,please input:
set /a *0x60000=*0x60000+1
if abcd


没有,再扩展下去还不如直接用WENV了。
回复

使用道具 举报

126#
发表于 2011-1-13 09:19:33 | 显示全部楼层
原帖由 zxw 于 2011-1-12 21:59 发表
@chenall大:
建议用%~d1取设备名时,默认小写。

你输入的是小写就是小写的了,你输入大写根本就无法执行,还有必要再进行转换吗?
不过我有另外的打算。
%~d1
现在如果是用/XX/XX.BAT来启动的默认是()
准备改成
它的实际盘符,直接用(xx,yy)或(xx)来表示,这样就保证可以随时返回这个批处理文件所在的磁盘了。

也许晚上发布的版本会有这个改进。
回复

使用道具 举报

127#
发表于 2011-1-13 11:05:35 | 显示全部楼层
你用0PE试一下应该也是一样的。

这是因为使用了虚拟磁盘的原因。

CSPE我已经不管了。
回复

使用道具 举报

128#
发表于 2011-1-14 10:14:08 | 显示全部楼层
原帖由 zhaohj 于 2011-1-13 23:15 发表


晚上测试了0PE下diskgen,竟然与DOS下分区一致,迷糊了。


不同的驱动,肯定不一样。这个应该是FIRADISK的驱动。
回复

使用道具 举报

129#
发表于 2011-1-14 10:15:18 | 显示全部楼层
原帖由 sratlf 于 2011-1-13 19:42 发表
@chenall

c大  set命令能否增强一下  可以将输入字符全部转为大写或小写


好吧,为了方便我还是加上好了,反正就几行代码。比较复杂的就不考虑了。
回复

使用道具 举报

130#
发表于 2011-1-14 10:56:41 | 显示全部楼层
原帖由 zhaohj 于 2011-1-14 10:28 发表
确实,查看了0PE的txtsetup.sif中使用了FIRADISK。

但我在CSPE的ext.zip\upsys,把FIRADISK.sys改名为wdsys.sys,放入upsys目录下,结果也是一样的。


也许是没有交换磁盘映射,具体的忘记了。
回复

使用道具 举报

131#
发表于 2011-1-14 15:15:12 | 显示全部楼层
新版已经上传。
set命令添加/l /u参数
用于大小写转换
/l 转小写
/u 转大写。

@zhaohj
呵呵,不知什么时候改错了。找到原因就好
回复

使用道具 举报

132#
发表于 2011-1-15 13:10:06 | 显示全部楼层
原帖由 zhaohj 于 2011-1-15 12:16 发表
问下C大:
time、date是grub4内置的两个变量,如显示当前日期、时间 echo %@date%  %@time%
还有其他内置的变量吗?


和WENV一样的,另外一个是@RANDOM生成一个随机数

另外还有一个功能也许在某些情况下会用到。。

0x4CB00 位置保存了上一个命令的返回值。

[ 本帖最后由 chenall 于 2011-1-15 13:11 编辑 ]
回复

使用道具 举报

133#
发表于 2011-1-15 18:59:52 | 显示全部楼层
原帖由 zhaohj 于 2011-1-15 14:33 发表
这个返回值很有用处,比如set a=abc
read 0x4cb00得到0x3,就是变量值的长度

如果能这样就更好了:
set b=*0x4cb00


set /a b=*0x4cb00就行了.

因为set /a是调用calc命令的计算结果的...calc支持的都可以使用.
回复

使用道具 举报

134#
发表于 2011-1-15 22:55:32 | 显示全部楼层
原帖由 zxw 于 2011-1-15 22:34 发表
哈哈,这个好。免得来计算。

对了,c大,什么时候增强一下clear?记得你好象说过,执行clear后,清除什么窗口行计数来着



好像已经修复了吧,现在的版本还会?
回复

使用道具 举报

135#
发表于 2011-1-16 11:42:19 | 显示全部楼层
原帖由 zxw 于 2011-1-15 23:07 发表
呵,那就好。免得在脚本中用pager off了。

另请教两个问题:
1.对于批处理中,%~d1%取得的设备名是用数字表达的。
本来我喜欢这种表达方式,但一般用户可能更倾向于字母表达法。
我目前用:
root + cat  ...


1.有这个必要吗?这个是程序内部处理的问题,最终用户好像没有必要管这个的吧.
在程序内部直接用数值来表示可以省去很多麻烦.

2.这个就比较不解了?还有返回十六进制的说法??也许是指CALC计算结果显示的数值吧.
目前不是已经有了吗?
回复

使用道具 举报

136#
发表于 2011-1-16 17:58:58 | 显示全部楼层
原帖由 zhaohj 于 2011-1-16 17:06 发表
cat命令已经增加了参数--number=n,能否扩展一下--number=-n,输出倒数n个数。如-1是找到的最后一个。
现在通过locate=string 总数目可通过返回值0x4cb00得到。
通常情况下,用户需要的是第一个或最后一个结果 ...


找最后一个你可以尝试用批处理循环来得到.
一个很简单的例子..
!BAT
cat --locate=\xec (md)0x300+1 | call :get_last
exit
:get_last
if "%1"=="" exit
shift
if "%1"=="" set last=%0
goto :get_last
回复

使用道具 举报

137#
发表于 2011-1-16 18:00:41 | 显示全部楼层
原帖由 sratlf 于 2011-1-16 17:40 发表
@chenall

c大  有什么命令可以查找文件夹  比如类似find /boot/    现在的find还不支持

还有  什么时候能加入非连续文件直接map就好了



因为之前find的设计是专门找文件使用的,找到文件后会尝试打开,文件夹当然是失败的了.

有空再看看可不可以改一下.

关于MAP的问题,目前就不要想了,我没有这个能力,,

[ 本帖最后由 chenall 于 2011-1-16 18:04 编辑 ]
回复

使用道具 举报

138#
发表于 2011-1-16 18:02:41 | 显示全部楼层
原帖由 zxw 于 2011-1-16 17:46 发表

这个好,建议添加。



添加这个功能很不划算,因为程序在还没有查找完成之前无法确定最后一个....

非要实现的话就必须缓存所有找到的内容,然后处理..太麻烦了,不划算...

还不如直接用批处理,几语句就搞定了..
回复

使用道具 举报

139#
发表于 2011-1-16 18:18:05 | 显示全部楼层
另外关于find 目录其实目前也是可以的..
以下命令就可以找到有带/boot目录的磁盘并设置为root
find --set-root ls /boot
缺点是如果有boot1同样会被找到.

这时可以换一种写法
find --set-root ls /boot/
这样可以保证找到完全符合的..
同样的缺点,如果这个文件夹下面没有任何文件还是会失败.

具本怎么应用你们可以看着办..

实事上很多功能都可以通过一些命令的组合来实现.
回复

使用道具 举报

140#
发表于 2011-1-17 12:04:58 | 显示全部楼层
原帖由 zhaohj 于 2011-1-17 11:19 发表
问C大,比如call :get_las要调用多次,
如:
!BAT
...
cat --length=%a% --locate=[ (fd1)/OEM | call :get_last
set /a b=0x%last%+1
cat --length=%a% --locate=] (fd1)/OEM | call :get_last
...
...


你试过了吗???为什么不试一下。。。

exit也不会像你说的那样,如果有加参数的exit另当别论。

[ 本帖最后由 chenall 于 2011-1-17 12:06 编辑 ]
回复

使用道具 举报

141#
发表于 2011-1-17 12:25:38 | 显示全部楼层
那是你自己使用的问题。。。注意看提示,,参数错误,和exit一点关系也没有。

批处理里面什么时候有%1%了???
回复

使用道具 举报

142#
发表于 2011-1-17 13:30:12 | 显示全部楼层
不知谁动了我的电脑,被移动了,汗。。
回复

使用道具 举报

143#
发表于 2011-1-17 14:44:31 | 显示全部楼层
原帖由 zhaohj 于 2011-1-17 14:09 发表
cat --locate=string
string限制16个字符还真不够,另外还要区分大小写,目前看来还得使用wenv(tuxw)。

cat加强一下还是很有必要。因为目前对文本的处理cat是关键内置命令
另外cat命令只有--length=0时我 ...


复杂的情况还是用外部命令吧。内部命令只是为了方便,不会去考虑许多复杂的情况的。

cat --locate的输出上次忘了改了,,下一版再改。
回复

使用道具 举报

144#
发表于 2011-1-19 12:28:24 | 显示全部楼层
原帖由 zhaohj 于 2011-1-19 12:12 发表
set命令能否再加个参数(取消回车换行)
set  /n
因为管道输出大多带回车换行

当然再写一句也简单:set a=%a:~0,-1%


也许统一让SET命令不接受换行参数好了.必竟要用到换行的变量比较少用.

这样也比较符合正常情况.
回复

使用道具 举报

145#
发表于 2011-1-19 14:30:30 | 显示全部楼层
原帖由 zhaohj 于 2011-1-19 14:19 发表
cat --replace=string1 --locate=string2 FILE
大多时候不灵(长度不变的情况下)。

搞个变量值的字符替换吧。



这个要完全匹配的,,变时替换还是用WENV吧。在GRUB4DOS内部实现这个功能不划算。
回复

使用道具 举报

146#
发表于 2011-1-19 15:15:21 | 显示全部楼层
原帖由 zhaohj 于 2011-1-19 14:38 发表
tuxw的wenv有替换功能,你的wenv我印象中没有加入。



记得很早之前就有了,只是没有公开用法而已,在WENV的贴子里面有介绍过
像下像这样子的,你可以试一下。^_^

set aa=cdef
wenv set aa=${aa!cd=e435}
回复

使用道具 举报

147#
发表于 2011-1-19 16:43:21 | 显示全部楼层
原帖由 zxw 于 2011-1-19 16:15 发表
@chenall:
测试=作为分隔符时,发现=放在最前面,如图,这个算不算正常?
111655


这是个好办法。。。^_^

不过看起来有BUG,我查一下。。
回复

使用道具 举报

148#
发表于 2011-1-19 16:59:30 | 显示全部楼层
好了,更新了一下,修正了这个BUG。。

另外新的SET命令不再接受回车符。。
回复

使用道具 举报

149#
发表于 2011-1-19 20:19:12 | 显示全部楼层
修复了一个比较严重的BUG(fb文件系统).

影响到使用fb文件系统的功能(ud除外)

建议都更新到最新版。
http://grub4dos-chenall.googleco ... 4.5b-2011-01-19f.7z
回复

使用道具 举报

150#
发表于 2011-1-20 12:17:41 | 显示全部楼层
看截图和FOR一点关系也没有,应该是其它原因吧.

为什么不用调试模式看看执行什么命令出错了呢?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-6 06:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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