无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: chenall
打印 上一主题 下一主题

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

  [复制链接]
1081#
发表于 2022-2-25 09:19:33 | 只看该作者
liuzhaoyzz 发表于 2021-2-10 16:30
wenv外部命令好像不能完全被取代,比如变量里面的字符串截取功能,内置命令好像就做不到?

ch ...
比如变量里面的字符串截取功能

能不能举个例子?
我看看可不可以单独写个外部命令。

点评

比如说用grub4dos用partnew方式启动debian: title /linux/veket/v22.a-2022.02.02/veket_22.a.iso-partnew[not_recommend] find --ignore-floppies --ignore-cd --set-root /linux/veket/v22.a-2022.02.02/veket_  详情 回复 发表于 2022-2-25 10:36
回复

使用道具 举报

1082#
发表于 2022-2-25 10:36:26 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-2-25 10:48 编辑
wintoflash 发表于 2022-2-25 09:19
能不能举个例子?
我看看可不可以单独写个外部命令。

比如说用grub4dos用partnew方式启动veket:
title /linux/veket/v22.a-2022.02.02/veket_22.a.iso-partnew[not_recommend]
find --ignore-floppies --ignore-cd --set-root /linux/veket/v22.a-2022.02.02/veket_22.a.iso
map /linux/veket/v22.a-2022.02.02/veket_22.a.iso (hd32) ;; map --hook
set root=%@root% ;; find /boot/grub/wenv | set p= ;; %p%/boot/grub/wenv set x=${root%,},3) ;; partnew %x% 0x00 /linux/veket/v22.a-2022.02.02/veket_22.a.iso
kernel (hd32)/vmlinuz PSUBDIR=/ pmedia=cd pfix=fsck
initrd (hd32)/initrd.gz

partnew那段,就是把root=(hdx,y)这样子的替换为(hdx,3)这样子的,创建第四个MBR分区表项,主分区,用于“挂载”(我喜欢用这个形象但不准确的词语)linux.iso启动。
要想实现字符串替换,grub4dos内部命令似乎没有相关的函数语句(或者是我不知道),所以想要借用wenv外部命令处理字符串。

点评

[attachimg]496365[/attachimg] 直接截去后两个字符不行吗? 如果考虑超过9个分区情况的话可能不好办,你问问批处理大佬有没有解决方法。  详情 回复 发表于 2022-2-25 11:05
回复

使用道具 举报

1083#
发表于 2022-2-25 11:05:08 | 只看该作者
liuzhaoyzz 发表于 2022-2-25 10:36
比如说用grub4dos用partnew方式启动veket:
title /linux/veket/v22.a-2022.02.02/veket_22.a.iso-partn ...


直接截去后两个字符不行吗?
如果考虑超过9个分区情况的话可能不好办,你问问批处理大佬有没有解决方法。

点评

你的这种字符串截取的用法,我是第一次见到,因为BIOS版本的grub4dos-help-2015-02-09.CHM里面,似乎没有这样子的说明啊。 这样子的用法,超过9个,的确感觉不好办,grub4dos的字符串截取,我没有研究过。  详情 回复 发表于 2022-2-25 11:20
很多细节的问题,用法我基本上快忘光了,wenv-tuxw-2011-05-23,有个wenv.chm,以前摸索着用的: 5: ${VAR%%STRING} 删除STRING后面的字符,贪婪模式 WENV set a=ABCD;abcd;1234 WENV set b=${a%;}  详情 回复 发表于 2022-2-25 11:11
回复

使用道具 举报

1084#
发表于 2022-2-25 11:11:12 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-2-25 13:38 编辑
wintoflash 发表于 2022-2-25 11:05
直接截去后两个字符不行吗?
如果考虑超过9个分区情况的话可能不好办,你问问批处理大佬有没有解决方 ...

很多细节的问题,用法我基本上快忘光了,wenv-tuxw-2011-05-23,有个wenv.chm,以前摸索着用的:
${VAR%%STRING}        删除STRING后面的字符,贪婪模式
WENV set a=ABCD;abcd;1234
WENV set b=${a%;}         得到b=ABCD;abcd
WENV set b=${a%%;}      得到b=ABCD

%p%/boot/grub/wenv set x=${root%,},3),意思是删除root=(hdx,y)里面的逗号以后的字符,得到(hdx,然后再加上,3),就得到了(hdx,3),这个是已经实现的代码,我已经用批处理写好了的,全自动写好批处理。
回复

使用道具 举报

1085#
发表于 2022-2-25 11:20:35 | 只看该作者
wintoflash 发表于 2022-2-25 11:05
直接截去后两个字符不行吗?
如果考虑超过9个分区情况的话可能不好办,你问问批处理大佬有没有解决方 ...

你的这种字符串截取的用法,我是第一次见到,因为BIOS版本的grub4dos-help-2015-02-09.CHM里面,似乎没有这样子的说明啊。
这样子的用法,超过9个,的确感觉不好办,grub4dos的字符串截取,我没有研究过。
回复

使用道具 举报

1086#
发表于 2022-2-25 18:51:25 | 只看该作者
本帖最后由 2011whp 于 2022-2-25 18:57 编辑

cat 分析 文章



echo -n   ( 相似 shift )


点评

厉害呀!感觉代码略微有点多。 echo -n也能实现吗?没看懂  详情 回复 发表于 2022-2-25 19:24
回复

使用道具 举报

1087#
发表于 2022-2-25 19:24:01 来自手机 | 只看该作者
2011whp 发表于 2022-2-25 18:51
cat 分析 文章



厉害呀!感觉代码略微有点多。
echo -n也能实现吗?没看懂
回复

使用道具 举报

1088#
发表于 2022-2-25 19:47:07 | 只看该作者
本帖最后由 2011whp 于 2022-2-25 20:00 编辑

好像   g4d 复杂的 分析,得用 内存 (批处理)
代码多: 适当地  ;; 成一行,好像单行支持 很长的(得注意:本地变量延时)

——————————————
echo -n 不能实现。

echo -n 对 空格(或+换行) 分隔的 短文章,有些用 (太多的 分隔 没意义了,cat分析通用些)
,不能实现 逗号 分隔

配合 外部命令  cmdline 分析 不多的参数,有用



回复

使用道具 举报

1089#
发表于 2022-3-24 15:54:30 | 只看该作者
很好用,谢谢楼主。继续使用中......
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-30 20:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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