zxw 发表于 2011-4-25 15:48:00

回复 #784 zhaohj 的帖子

这个地址貌似不是固定的?

[ 本帖最后由 zxw 于 2011-4-25 15:53 编辑 ]

chenall 发表于 2011-4-25 16:03:35

这个位置不是固定的...

@zxw
嘿嘿,发现下面的这个用法很有意思.
command | echo -n | echo -n | echo -n | set command1=
这个用法,很容易被人误解^_^.不明白的人会以为echo有这样的功能呢.

不建议直接取内存地址(因为可能不固定)
可以用规范的语句来获取比如上面的方法或
command | set command1=
set command1=%command1:~22%

也可以输出到内存中再截取比如:
command > (md)0x300+1
cat --skip=22 (md)0x300+1 | set command1=

总之有很多方法,其实并不难获取.

另外,最后执行命令的“返回值”在内存0x4cb00处,更新记录里面有说明.当然了我猜也许你想要的是得到字串符的结果,这个太麻烦.

zxw 发表于 2011-4-25 16:15:28

回复 #786 chenall 的帖子

嘿嘿,不好意思,你猜到了,就是要这个字符串。
方法多,就是有点拐弯卖角。
想来点直接痛快的,呵。

呵,那个用法是容易让人误解。

chenall 发表于 2011-4-26 02:11:15

2011-04-25@156
      1.新增两个内置变量@root,@path.
          @root 当前的root.(带路径的).比如 root (hd0,0)/boot 这时的@root是(hd0,0)/boot
          @path 当前默认外部命令查找路径.
      2.修正一个可能导致程序出错的问题.(使用到了临时变量的内存).
                   这个问题在批处理中使用configfile时可能碰到.
      3.批处理代码功能增强.
其它说明:
1.新的版本%~d0已经统一使用(hdx,y)/(fdx)之类的友好格式.

2.另外在批处理中使用%~dpx之类的参数时,如果该参数没有磁盘/路径信息则自动使用批处理文件所在的磁盘/路径信息.(之前的版本,是使用当前root的磁盘和"/"的路径)

3.完善了%~dp参数的提取.支持默认路径.
比如一个批处理文件放在(hd0,0)/boot/grub/下,
文件名是test.bat,并且默认的路径也是(hd0,0)/boot/grub

直接使用test.bat启动这个批处理时,里面的%~dp0将会是(hd0,0)/boot/grub
%0还是test.bat

[ 本帖最后由 chenall 于 2011-4-26 10:23 编辑 ]

zhaohj 发表于 2011-4-26 08:49:35

这次改动还是挺大的,做个记号!

@root变量值后面是否应该加“/”?
如 root (hd0,4)/aaaa/
@root应该得到(hd0,4)/aaaa/

zxw 发表于 2011-4-26 09:15:34

回复 #788 chenall 的帖子

呵,c大真棒!我梦想改进的地方都一一实现了。
%~d0还是test.bat
笔误?

chenall 发表于 2011-4-26 10:26:52

@zhaohj

root (hd0,4)/aaa 或 root (hd0,4)/aaa/ 都是一样的,最终的结果都是root (hd0,4)/aaa

@zxw
写错了,嘿嘿

zxw 发表于 2011-4-26 15:56:28

@chenall大:
建议这个也处理一下。如图t2的值。


[ 本帖最后由 zxw 于 2011-4-26 16:27 编辑 ]

chenall 发表于 2011-4-26 16:27:05

这个等以后再说,需要想办法优化调整一下获取参数的代码,否则实现起来比较麻烦,浪费许多代码.

像获取@root,@path之类的就比较简单了,只需要两三行代码就可以.

目前的%~dpx获取到的也不一定是正确的,自己使用小心就行了.
比如
文件test.bat放在当前root下面.

直接执行test.bat获取到的%~dp0就会不对,因为这种情况是处理成使用默认的command path

解决办法就是对于当前root下的文件执行时多加一个''/'',/test.bat这样就行了.

以后有更好的方案再进行改进吧.

[ 本帖最后由 chenall 于 2011-4-26 16:31 编辑 ]

zhaohj 发表于 2011-4-26 17:38:53

相对目录,目前还不成熟,不建议使用。
“/”在dos下是根,当前目录下是“.”;而在grub中“/”是相对root而言的,有待改进。

或者command隐含首先支持/,即当前目录下最优先执行。

=============
C大请关注一下这个帖子:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=192388&page=1#pid2215482

utf-8格式的菜单,可能好多命令无效。

[ 本帖最后由 zhaohj 于 2011-4-26 18:02 编辑 ]

zxw 发表于 2011-4-27 00:20:37

回复 #793 chenall 的帖子

呵, 不急,慢慢来。
另,新版configfile在批处理中还是有问题,之前的版本可以这样用。
说明:在一定的条件下,configfile需要被call调用,下图最简单化反馈新版问题。


[ 本帖最后由 zxw 于 2011-4-27 00:56 编辑 ]

chenall 发表于 2011-4-27 00:57:55

明白了,明天再修改,

先试下这个看看是否正常了.

[ 本帖最后由 chenall 于 2011-4-27 17:00 编辑 ]

yjd 发表于 2011-4-27 09:03:53

wee有什么办法隐藏菜单,或说不显示。
把时间设置为0,有的机器慢点还是会有个显示。

zxw 发表于 2011-4-27 09:37:18

回复 #796 chenall 的帖子

是否传错?还是一样的错误。

chenall 发表于 2011-4-27 17:01:37

OK,已经上传,麻烦测试一下是否还有其它问题..

@yjd
好像没有什么好的办法.

可以试试我的方法,WEE菜单第一行直接启动系统或者GRUB4DOS.通过GRUB4DOS来控制菜单.

yjd 发表于 2011-4-27 17:22:15

@yjd
好像没有什么好的办法.

可以试试我的方法,WEE菜单第一行直接启动系统或者GRUB4DOS.通过GRUB4DOS来控制菜单.
好的我试试,谢谢!

zxw 发表于 2011-4-27 17:27:25

回复 #799 chenall 的帖子

初步测试正常。...

zxw 发表于 2011-4-28 14:17:21

@chenall :
建议交换磁盘系列后,启动设备的磁盘信息作相应调整。
如(hd0)、(hd1)交换前,0x8280值为0x80;交换后,0x8280值应调整为0x81.

[ 本帖最后由 zxw 于 2011-4-28 14:28 编辑 ]

chenall 发表于 2011-4-28 17:11:18

我觉得这个应该由用户自己去控制.

你只考虑到了交换,
万一是覆盖了map /xxxx.img (hd0)之类的,当如何处理?

又假如是取消映射呢map (hd0) (hd0) / map --unmap之类,又当如何处理.

我觉得有些复杂了,如果不能很好的处理,还是保留现状.

zxw 发表于 2011-4-28 17:14:25

嗯,还是c大想得周全。看来鱼与熊掌不能兼得。

zxw 发表于 2011-4-29 10:30:19

@chenall :
内置变量@root还有bug,多了一个前置空格。


[ 本帖最后由 zxw 于 2011-4-30 02:37 编辑 ]

chenall 发表于 2011-4-29 11:22:41

下个版本再修改一下。。

zhaohj 发表于 2011-4-29 11:37:20

好像正常啊...............

zxw 发表于 2011-4-29 11:42:02

回复 #807 zhaohj 的帖子

加双引号,问题就出来了。貌似@root的值有前置空格。

[ 本帖最后由 zxw 于 2011-4-29 11:46 编辑 ]

zhaohj 发表于 2011-4-29 11:56:34

原帖由 zxw 于 2011-4-29 11:42 发表 http://bbs.wuyou.net/images/common/back.gif
加双引号,问题就出来了。貌似@root的值有前置空格。

加双引号,看到了。
PXE与你的有不同点

zxw 发表于 2011-4-30 02:09:52

@chenall :
新版@root的问题是解决了,但还有一点小问题。

               

不知算bug否?

想了一下,既算bug,也可不算。这样就算获取批处理自身路径的另类形式。请忽略。

[ 本帖最后由 zxw 于 2011-4-30 02:35 编辑 ]

chenall 发表于 2011-4-30 18:02:42

嗯,发现了另外一个BUG,晚上再抽空修改一下..

chenall 发表于 2011-4-30 22:07:49

已经更新.

1.取消前面版本对批处理参数的调整.恢复到04-16版.(有点得不偿失,以后有更好的方案再处理)
2.修正一个BUG.(函数print_root_device).
3.批处理参数新增%~f 文件全路径,%~z文件大小.
4.现在批处理脚本可以使用使用errorcheck命令控制是否检测错误(默认错误就退出).

zxw 发表于 2011-5-1 01:47:33

新版引入了bug,见图,a2的值?



再跟踪了一下,路径作为参数传递时有bug
   

[ 本帖最后由 zxw 于 2011-5-1 02:24 编辑 ]

chenall 发表于 2011-5-1 13:54:40

谢谢报告,是由于""引起的,
不小心被吃了一个引号.^_^.

等晚上才能修改上传了.
页: 17 18 19 20 21 22 23 24 25 26 [27] 28 29 30 31 32 33 34 35 36
查看完整版本: GRUB4DOS更新建议、bug反馈专帖