set命令测试ok!
不过是否与WENV(tuxw)是否存在内存冲突?
我记得这个问题以前曾碰到过。
目前变量是直接使用WENV的方案的。应该是其它问题。
另外还有一点,尽量不要使用wenv exec的功能,因为目前的内存管理不完善。
虽然目前没有限制外部命令不能执行外命命令但,使用外部程序运行外部程序比较容易出错,用批处理来调用就没有影响了。
但是不能WENV调用批处理再用这个批处理调用外部命令,这样更容易出问题。
[ 本帖最后由 chenall 于 2011-1-11 10:29 编辑 ] 把所有的exec排除,还是存在这个错误。
不知与这个是否有关:
map --rd-base=0xF00000 && map --rd-size=0x800
这段内存是否与最新的GRUB4冲突?
需要2K的安全区域
[ 本帖最后由 zhaohj 于 2011-1-11 11:18 编辑 ] 竟然在使用15MB-16MB之间有内存?
8M-16M之内的内存有很多用途,最好不要乱用。
2K的安全区域可以从0x40000开始。
0x45000以后是变量占用的内存占用65个扇区。
我最新弄的MODBOOT占用了全部0X40000-0X45000之间的内存。
另外如果没有使用cmp命令,那6m-7m也是可以使用的。
4-6M字体占用了。 改成其他区域,如0x65000,0x200000都不行。我上面是0xf00000 (5个0),所以不存在冲突问题
出现问题是set变量支持菜单开始的,也就是1-9,1-10两个版本
[ 本帖最后由 zhaohj 于 2011-1-11 16:27 编辑 ] 原帖由 zhaohj 于 2011-1-11 15:43 发表 http://bbs.wuyou.net/images/common/back.gif
改成其他区域,如0x65000,0x200000都不行。我上面是0xf00000 (5个0),所以不存在冲突问题
出现问题是set变量支持菜单开始的,也就是1-9,1-10两个版本
0xf00000=15728640=15MB
建议还是用0x40000开始的2Kb吧。
这个只能你自己找原因了。
用debug模式跟踪一下批处理看看执行到哪个语句出错了。 debug on下没出错信息死机
好像与wenv switch use_x32=on有关,第二幅图后变单步执行了,再后面死机
[ 本帖最后由 zhaohj 于 2011-1-11 16:57 编辑 ] 批处理里面不要有DEBUG OFF
使用debug on
每执行一条批处理命令都会暂停的。
按N可以退出执行,其它键继续。
还是你处理的数据量太大了,命令行最长不能超过1500个字符。
昨天的版本嵌套2层批处理后可能会出错。
还是先下载今天的版本试一下吧。
[ 本帖最后由 chenall 于 2011-1-11 16:52 编辑 ] 死机问题1-11版本已经解决。
set oempath && WENV set oempath=${oempath!\=/}
set oempath && set srspath=%srspath%%oempath%/ && echo set srspath=%srspath% >> (fd2)/ENVI.BAT 原帖由 zhaohj 于 2011-1-11 17:13 发表 http://bbs.wuyou.net/images/common/back.gif
死机问题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%/ 晕啊,我一直用tuxw版wenv,测试10、11版grub4dos,总是出现貌似内存方面的问题。
试着换回chenall大的原版,哈哈,问题解决。 原帖由 chenall 于 2011-1-11 17:26 发表 http://bbs.wuyou.net/images/common/back.gif
有一点需要注意一下上面的语句在批处理中执行
%srspath%%oempath%/
因为批处理执行前会先替换%%为一个 %.然后再丢给命令处理器。
所以上面会被处理成
%srspath%oempath%/
呵呵,改成%srspath%%%oempath%/问题解决。
下面问题怎么解决? 原帖由 zhaohj 于 2011-1-11 20:19 发表 http://bbs.wuyou.net/images/common/back.gif
呵呵,改成%srspath%%%oempath%/问题解决。
下面问题怎么解决?
pxe detect放在菜单最前面。
暂时无解,我也发现过几次,但是没有找到原因,看代码都是正常的。 昨天在测试SRSF6过程中,其中的一个批处理makeinf.bat使用了0x40000内存地址:
map --rd-base=0x40000 && map --rd-size=0x800
...
fat copy (rd)+1 (fd1)/SRS.INF
出现死机,后来改成:
fat mkfile size=2k (fd1)/SRS.INF
因为">"以前是没清空内存的,是后来改变的。
-----------------
怀疑要么是tuxw的wenv问题引起的内存冲突,要么...
问题可以重现,C大是否需要彻查? 原帖由 zhaohj 于 2011-1-12 09:49 发表 http://bbs.wuyou.net/images/common/back.gif
昨天在测试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调试很方便的。 奇怪,可能是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 ; check %<-$${a} loop ; echo cat --length=0 $${srspath}$${a} key(&&) FAT copy /o $${srspath}$${a} (fd1)/) >> (fd2)/DRIVERS.BAT
生成的DRIVERS.BAT见图,怎么取消set a=$u,%i 生成的输出?
[ 本帖最后由 zhaohj 于 2011-1-12 12:43 编辑 ] 原帖由 zhaohj 于 2011-1-12 11:21 发表 奇怪,可能是1-10版本的问题,1-11版本问题无法重现。批处理中,debug on后,下面这两句:echo !BAT > (fd2)/DRIVERS.BATWENV for /f "tokens=3 delims==," %i in ( (fd1)/SYSINF ) do (set a=$u,%i ;... 应该是10日的版本有点问题 我测试合盘时把SRSF6和SRS_F6两个模块都集成了,用10日的版本SRSF6总是重启,11日版本正常。 原帖由 zhaohj 于 2011-1-12 11:21 发表 http://bbs.wuyou.net/images/common/back.gif
奇怪,可能是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就没有显示了。 C大有否计划扩展set、if功能?
set a=$u,%a%...
set /p a=$u,please input:
set /a *0x60000=*0x60000+1
if abcd<-%a%
... 原帖由 zhaohj 于 2011-1-12 16:45 发表 http://bbs.wuyou.net/images/common/back.gif
C大有否计划扩展set、if功能?
set a=$u,%a%...
set /p a=$u,please input:
set /a *0x60000=*0x60000+1
if abcd
没有,再扩展下去还不如直接用WENV了。 @chenall大:
建议用%~d1取设备名时,默认小写。 原帖由 zxw 于 2011-1-12 21:59 发表 http://bbs.wuyou.net/images/common/back.gif
@chenall大:
建议用%~d1取设备名时,默认小写。
你输入的是小写就是小写的了,你输入大写根本就无法执行,还有必要再进行转换吗?
不过我有另外的打算。
%~d1
现在如果是用/XX/XX.BAT来启动的默认是()
准备改成
它的实际盘符,直接用(xx,yy)或(xx)来表示,这样就保证可以随时返回这个批处理文件所在的磁盘了。
也许晚上发布的版本会有这个改进。
回复 #381 chenall 的帖子
我的意思是用户输入了大写就强制转换设备名为小写,这样可以容错。原帖由 chenall 于 2011-1-13 09:19 发表 http://bbs.wuyou.net/images/common/back.gif
现在如果是用/XX/XX.BAT来启动的默认是()
准备改成
它的实际盘符,直接用(xx,yy)或(xx)来表示,这样就保证可以随时返回这个批处理文件所在的磁盘了。
...
用(xx)来表示,这个好,强烈支持!
[ 本帖最后由 zxw 于 2011-1-13 16:56 编辑 ] C大,今天运行DOS版的DISKGEN,发现CSPE下用DISKGEN分区与DOS下分区的分区情况不一致。
而在其他PE下使用DISKGEN与DOS下一致的,望有空时候测试一下。
下面是DOS下与CSPE下使用diskgen的分区报告:
[ 本帖最后由 zhaohj 于 2011-1-13 10:57 编辑 ] 你用0PE试一下应该也是一样的。
这是因为使用了虚拟磁盘的原因。
CSPE我已经不管了。 @chenall
c大set命令能否增强一下可以将输入字符全部转为大写或小写 原帖由 chenall 于 2011-1-13 11:05 发表 http://bbs.wuyou.net/images/common/back.gif
你用0PE试一下应该也是一样的。
这是因为使用了虚拟磁盘的原因。
CSPE我已经不管了。
晚上测试了0PE下diskgen,竟然与DOS下分区一致,迷糊了。
[ 本帖最后由 zhaohj 于 2011-1-13 23:18 编辑 ] 原帖由 zhaohj 于 2011-1-13 23:15 发表 http://bbs.wuyou.net/images/common/back.gif
晚上测试了0PE下diskgen,竟然与DOS下分区一致,迷糊了。
不同的驱动,肯定不一样。这个应该是FIRADISK的驱动。 原帖由 sratlf 于 2011-1-13 19:42 发表 http://bbs.wuyou.net/images/common/back.gif
@chenall
c大set命令能否增强一下可以将输入字符全部转为大写或小写
好吧,为了方便我还是加上好了,反正就几行代码。比较复杂的就不考虑了。 确实,查看了0PE的txtsetup.sif中使用了FIRADISK。
但我在CSPE的ext.zip\upsys,把FIRADISK.sys改名为wdsys.sys,放入upsys目录下,结果也是一样的。 原帖由 zhaohj 于 2011-1-14 10:28 发表 http://bbs.wuyou.net/images/common/back.gif
确实,查看了0PE的txtsetup.sif中使用了FIRADISK。
但我在CSPE的ext.zip\upsys,把FIRADISK.sys改名为wdsys.sys,放入upsys目录下,结果也是一样的。
也许是没有交换磁盘映射,具体的忘记了。