无忧启动论坛

标题: G4D如何动态截取字符串? [打印本页]

作者: hotdll    时间: 2011-10-14 09:56
标题: G4D如何动态截取字符串?
例如:
set id="PCI\VEN_8086&DEV_27C1&CC_0106","iaStor"
set length=21
echo %id:~,%length%%

最后echo %id:~,%length%% 这句代码肯定是没办法正确执行的。CMD下可以用!代替最外层的%,G4D如何弄?
作者: zxw    时间: 2011-10-14 10:40
!BAT
::id与length都是动态的?如是,不用wenv的话可以这样:
set id="PCI\VEN_8086&DEV_27C1&CC_0106","iaStor"
set tmp=%@retval%
set length=21
set /a tmp=%tmp%-%length%
echo -n %id% > (md)0x200+1
cat --skip=%tmp% (md)0x200+1 | set tmp=
::最后获取的tmp值应该就是你想的结果。
=========================
猜测你实际想要提取的结果是:PCI\VEN_8086&DEV_27C1
如不能确定是否有引号,可以这样:
set id="PCI\VEN_8086&DEV_27C1&CC_0106","iaStor"
set length=21
call :man_char %id%
exit
:man_char
echo -n %~1 > (md)0x200+1
cat --length=%length% (md)0x200+1 | set tmp=
exit

[ 本帖最后由 zxw 于 2011-10-14 16:01 编辑 ]
作者: 快雪时晴    时间: 2011-10-14 11:06
个人觉得G4D应该把内部公共函数接口暴露出来,和命令一样可以直接引用,不用依赖wenv,也不用把批处理写得很复杂

当然,还蛮崇拜zxw
作者: zhaohj    时间: 2011-10-14 11:28
wenv set tmp=${id:1:${length}}

也许是bug吧,让C大看看!
作者: Plantsoot    时间: 2011-10-14 11:49
原帖由 快雪时晴 于 2011-10-14 11:06 发表
个人觉得G4D应该把内部公共函数接口暴露出来,和命令一样可以直接引用,不用依赖wenv,也不用把批处理写得很复杂

当然,还蛮崇拜zxw


呵呵,看来 grubcall 的需求还是有的。
作者: chenall    时间: 2011-10-14 12:37
标题: 回复 #3 快雪时晴 的帖子
这个话有点问题。

GRUB4DOS的所有东西都是公开的。关键是懂不懂得使用。懂不懂得找资料。

像一楼的问题,不使用WENV都可以有N种解决方案。如果经常看我写的批处理就会看到有类似问题的解决方案。

而且没有心要那么麻烦,两三个语句就可以搞定了。

@zhaohj
wenv已经不再更新,有问题可以自己想办法解决。

[ 本帖最后由 chenall 于 2011-10-14 12:38 编辑 ]
作者: hotdll    时间: 2011-10-14 12:38
标题: 回复 #6 chenall 的帖子
能不能把两三个语句写出来?
谢谢
作者: hotdll    时间: 2011-10-14 12:43
原帖由 zhaohj 于 2011-10-14 11:28 发表
wenv set tmp=${id:1:${length}}

也许是bug吧,让C大看看!

赵大,我之所以提出这个问题就是因为我不适用WENV。。。。。
10月09日的grldr好像不支持wenv的call命令调用系统的call命令


呵呵,不过还是谢谢!
作者: chenall    时间: 2011-10-14 15:49
标题: 回复 #7 hotdll 的帖子
给你一个最简单同时也是最复杂的写法

call Fn.0 0 "%.*s" %length% "%id%" | set tmp=

简单,因为只有一个语句; 复杂,因为对于大多数人来说,要理解这样的语句不太容易。
作者: zxw    时间: 2011-10-14 16:05
标题: 回复 #9 chenall 的帖子
学习的机会来了。
\被转义了……
作者: chenall    时间: 2011-10-14 16:17
标题: 回复 #10 zxw 的帖子
嗯,忘了转义符了。。
作者: hotdll    时间: 2011-10-14 21:33
标题: 回复 #9 chenall 的帖子
谢谢C大
看来能理解这句代码后,就能读懂你的dmps.bat 了。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3