无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
361#
发表于 2011-7-11 17:34:23 | 显示全部楼层

回复 #1117 zhaohj 的帖子

这些还是由用户自己处理吧,免得增添麻烦。
回复

使用道具 举报

362#
发表于 2011-7-11 21:59:17 | 显示全部楼层
@zxw
找到一个BUG,已经修复,再试下这个。

[ 本帖最后由 chenall 于 2011-7-12 10:49 编辑 ]
回复

使用道具 举报

363#
发表于 2011-7-12 08:14:21 | 显示全部楼层

回复 #1122 zhaohj 的帖子

看到你用WENV,我猜你应该是把WENV的变量和系统的变量混用了。

注意看我前面的说明:

使用了SETLOCAL之后,WENV SET的变量就只有WENV自己可以访问。

像以下语句就是错误的,除非之前已经存在变量AA否则,AA的值为空。

SETLOCAL
WENV SET AA=BB
echo %AA%
回复

使用道具 举报

364#
发表于 2011-7-12 09:46:48 | 显示全部楼层

回复 #1124 zhaohj 的帖子

下午我会弄成兼容WENV的版本。这样就不会混乱了。

@zxw
目前的情况是正常的,因为WENV的变量是不受控制的。

稍后有空我会修改上传一个新的版本,到时就不会这样子了。
回复

使用道具 举报

365#
发表于 2011-7-12 10:52:03 | 显示全部楼层
麻烦再试试这个,这个尽量兼容之前的版本(包括WENV的SET命令)

另外修正了使用CALL :XXX时之前的SETLOCAL会失效的问题。

[ 本帖最后由 chenall 于 2011-7-12 15:53 编辑 ]
回复

使用道具 举报

366#
发表于 2011-7-12 11:19:52 | 显示全部楼层
我好像正常呀,你们是如何使用的。


哦,明白了,因为使用setlocal之前没有初使化变量空间。所以就会这样子了。

只要先初使化变量空间再使用就正常了。

[ 本帖最后由 chenall 于 2011-7-12 11:23 编辑 ]
回复

使用道具 举报

367#
发表于 2011-7-12 15:52:41 | 显示全部楼层
一些小改动。
现在的setlocal 和 endlocal 应该都会比较正常了。

另外对clear也进行了修改,现在即使不使用pager off,在批处理中显示字符然后clear应该也不会出现按'Q'键退出的提示了。

但是在显示满一屏的时候还是会有提示。

grldr.rar

129.65 KB, 下载次数: 75, 下载积分: 无忧币 -2

回复

使用道具 举报

368#
发表于 2011-7-12 17:36:41 | 显示全部楼层
可以,不过在菜单中使用不会自动恢复,需要自己endlocal,
批处理中使用你可以在必要的时候才endlocal,其它的在退出后会自动恢复。

考虑到在批处理中使用setlocal
需要执行configfile,并且需要保留变量的情况,增加一个非标准用法

setlocal @

在批处理退出时可以保留setlocal @之后的设置。

必须使用endlocal @来解除。

可以这样理解,
setlocal @
就是相当于重新生成了一个系统级变量, 不能使用endlocal恢复到上一个环境。
可以使用endlocal @来恢复。

注:setlocal @之后还可以setlocal

在批处理中setlocal之后的设置在退出之后会恢复。
例子
!BAT
set aa=a0
setlocal @
set aa=a1
setlocal
set aa=a2

批处理执行退出后aa的变量值是a1

[ 本帖最后由 chenall 于 2011-7-13 10:49 编辑 ]
回复

使用道具 举报

369#
发表于 2011-7-13 10:49:14 | 显示全部楼层
2011-07-13
1.在执行cmain之前初始化变量内存空间。
2011-07-12
1.执行clear命令时同时设置count_lines为0。
2.内置变量增加@retval,其实就是之前的0x4cb00
3.增加setlocal @和endlocal @用法。
   setlocal @可以在批处理中使用,把当前的环境保存起来
   除非使用endlocal @否则setlocal @之后的设置会一直保留(批处理退出也不影响).
注:1.在批处理中出现setlocal @则在批处理中setlocal @之前的setlocal命令会全部失效。
     所以setlocal @有必要的话一般要放在批处理最前面。
     2.setlocal @后面如果还有出现setlocal,则setlocal之后的设置不会保留.

2011-07-11
1.添加SETLOCAL和ENDLOCAL命令,和WINDOWS下的批处理用法一样。

[ 本帖最后由 chenall 于 2011-7-13 11:56 编辑 ]

grldr.rar

129.77 KB, 下载次数: 90, 下载积分: 无忧币 -2

回复

使用道具 举报

370#
发表于 2011-7-16 15:05:29 | 显示全部楼层
理解错误,你google一下shift的用法
回复

使用道具 举报

371#
发表于 2011-7-18 16:52:32 | 显示全部楼层

回复 #1144 zhaohj 的帖子

cat --locate

返回值是找到的数量。@retval=*0x4cb00
回复

使用道具 举报

372#
发表于 2011-7-18 21:02:43 | 显示全部楼层

回复 #1147 zhaohj 的帖子

返回值是找到的数量,这个是很早之前就这样子的。

可能会有人使用这个特性,我记得我也曾经用过。修改了就不兼容。

只能用其它扩展的方法,比如使用?_WENV的值也是一个办法,下次再说了。
回复

使用道具 举报

373#
发表于 2011-7-24 23:27:23 | 显示全部楼层

回复 #1151 zhaohj 的帖子

改成[*了
你可以再试一下看会不会有问题.
回复

使用道具 举报

374#
发表于 2011-7-27 14:55:08 | 显示全部楼层
嗯,下个版本会修正,因没有考虑到这种情况.
回复

使用道具 举报

375#
发表于 2011-7-28 14:22:23 | 显示全部楼层

回复 #1155 zxw 的帖子

新版已经上传,不过错误的设备号它的结果是不可预测的.自己使用时小心,

只是修正了当设备号错误是文件路径获取出错的问题.
回复

使用道具 举报

376#
发表于 2011-8-1 12:07:17 | 显示全部楼层

回复 #1159 jianliulin 的帖子

放在(bd)/boot/grub/目录里面的程序可以直接执行吗?
回复

使用道具 举报

377#
发表于 2011-8-1 21:08:15 | 显示全部楼层

回复 #1161 jianliulin 的帖子

已经修正,请下载新版测试
回复

使用道具 举报

378#
发表于 2011-8-2 19:58:17 | 显示全部楼层

回复 #1164 zxw 的帖子

1.必须单独处理(rd)+1的情况比较麻烦,先记录下,看看有没有什么好的方法.
2.exit 返回值
如果直接一个exit命令代表正常退出,返回真.
如果后面有数字比如exit 1代表非正常退出,返回假.
如果不是这样那就是BUG.

试了一下,确实是变慢了,发现checkkey()函数执行需要太多的时间,需要使用其它的方法来检测是否有按键,否则只能暂时禁用这个功能

确实没有考虑批处理调用批处理的情况,这个只是简单的退出.我们需要增加一个返回值.
回复

使用道具 举报

379#
发表于 2011-8-2 21:37:38 | 显示全部楼层
麻烦测试一下这个..

对于Ctrl+C直接读取内存地址判断按键,这样就不用每次执行都调用checkkey(),现在的批处理执行速度应该会和以前一样了.

如果没有问题,晚上12点之后再上传源码和新的版本.

grldr.rar

128.41 KB, 下载次数: 45, 下载积分: 无忧币 -2

回复

使用道具 举报

380#
发表于 2011-8-3 11:47:49 | 显示全部楼层

回复 #1167 zxw 的帖子

是与checkkey()函数有关.但是又必须使用这个函数查看是否按了Ctrl+C.

现在先使用0x417的值判断是否有按Ctrl键。

gfx菜单我从来没有用过,对这些不熟。。。
回复

使用道具 举报

381#
发表于 2011-8-4 10:48:50 | 显示全部楼层

回复 #1169 zxw 的帖子

CALL 是一个新的批处理环境,一个CALL就相当于调用一个批处理,只是不用再打开文件而已。

所以.....
回复

使用道具 举报

382#
发表于 2011-8-9 10:33:14 | 显示全部楼层
抱歉,改出了BUG,麻烦试试这个.

grldr.rar

129.74 KB, 下载次数: 42, 下载积分: 无忧币 -2

回复

使用道具 举报

383#
发表于 2011-8-9 10:55:08 | 显示全部楼层
上面的是测试用的,还没有整合.
回复

使用道具 举报

384#
发表于 2011-8-21 16:52:08 | 显示全部楼层
设备名错误,那得到的结果肯定也是错的,这个好像之前有提过.
回复

使用道具 举报

385#
发表于 2011-8-22 22:02:28 | 显示全部楼层
下次再改一下吧,错误的设备名就保留原样不处理.
回复

使用道具 举报

386#
发表于 2011-8-23 12:02:31 | 显示全部楼层
这是正常的,SET命令后面的空格不会被删除。影响不是很大,如果修改了可能会影响到之前的脚本,
我记得我之前写的脚本就有使用这个特性。

不过以后还是尽量不要使用这个特性,因为空格看不出来,复制代码的时候很容易出错。

需要带空格的建议使用“ ”
回复

使用道具 举报

387#
发表于 2011-8-25 11:32:38 | 显示全部楼层

回复 #1193 hhh333 的帖子

嗯,不过因为这样在看代码的时候不直观。

特别是如果一些编辑器会自动清除行首和行尾的空格导致出错。
回复

使用道具 举报

388#
发表于 2011-8-28 21:00:23 | 显示全部楼层

回复 #1195 qdaijchf 的帖子

感觉你没有明白find的作用,胡乱使用.

建议你看看说明

1.这个你可以搜一下论坛的贴子,记得之前就有人说过这个问题,如果这个论坛没有那应该在时空里面.
如果不懂得找可以去我的主页,文章顶部有一个GOOGLE的自定义搜索,输入plpbt应该就可以找到答案了.

2.直接find --set-root /windows/system32/ntoskrnl.exe
就可以找到GRUB4DOS所有能识别的磁盘中包含以上文件的磁盘,并设为root.

我猜测你可能是因为第一点所以才需要这样吧.
回复

使用道具 举报

389#
发表于 2011-8-28 23:11:03 | 显示全部楼层

回复 #1197 mygamexxx 的帖子

嘻嘻,是少了几个字...

@tingyue-wu
需要更详细的报告,
可以自己操作一下.用find命令不带参数,看看列出的磁盘.再配合cat --hex (hdx,y)+1来查看指定分区的引导扇区.

U盘的问题,和电脑主板有很大关系的
回复

使用道具 举报

390#
发表于 2011-9-4 09:56:01 | 显示全部楼层
我试了是正常的,看起来好像你写错了吧,

把%~d1写成了%~dl
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-18 08:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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