无忧启动论坛

标题: 如何用grub4dos命令读出文本文件中的参数值并赋给不同的变量 [打印本页]

作者: qj_tzy    时间: 2013-1-6 21:42
标题: 如何用grub4dos命令读出文本文件中的参数值并赋给不同的变量
如何用grub4dos命令读出文本文件中的参数值并赋给不同的变量


因我有一应用,需按如下两种方式之一,存取参数值:
1.若将各参数值(个数固定)以逗号分隔后,存入一个文本文件的首行,如:


sdfsdfsdf,rt56756,utyutyu,657_dfg,hfghfh9_4,fd87
dsfgdfsgdfg
dfghfghyjhgjuyiui
dfgdfgdfgdfg


用grub4dos命令,如何读出其首行,并将首行以逗号分隔的多个内容赋给vart,ttv,v3,m5,grgv,ppv等几个不同的变量。

即让vart=sdfsdfsdf
  ttv=rt56756,等等


2.或将各参数值分行存放入文本文件中,如何读取并分别赋给各变量


谢谢




[ 本帖最后由 qj_tzy 于 2013-1-8 09:18 编辑 ]
作者: qj_tzy    时间: 2013-1-7 22:01
标题: 回复 #1 qj_tzy 的帖子
自行顶起!

我因有一应用,想达到这一目的,不知GRUB4DOS能否达到这一目的,若能,还望各位高手不吝指教,非常感谢!
作者: qj_tzy    时间: 2013-1-21 09:13
顶一下,诚请各位高人解答!
作者: 527104427    时间: 2013-1-21 09:18
帮顶,应该用外部命令可以实现,具体要等高人出现……
作者: zxw    时间: 2013-1-21 09:42
很简单,用好cat命令即可。
作者: 527104427    时间: 2013-1-21 09:53
标题: 回复 #5 zxw 的帖子
他的意思是说,逗号与逗号之间的字符有多少不确定,有多少个逗号也不确定,Z大能否给出个例子?
作者: qj_tzy    时间: 2013-1-21 09:54
标题: 回复 #5 zxw 的帖子
我曾用cat试过,由于对其理解不够,未能成功,能否请您帮我编一段,以解我之急,谢谢!
作者: qj_tzy    时间: 2013-1-21 10:06
标题: 回复 #6 527104427 的帖子
若逗号个数确定,但逗号间的字符个数不确定,能否实现?

或先考虑此文本文件只有一行的情况。

[ 本帖最后由 qj_tzy 于 2013-1-21 10:08 编辑 ]
作者: 2011895866818    时间: 2013-1-21 12:39
用cat查找关键字:“,”
得到位置数字,用减法分割.
在用cat读取特定段.
作者: qj_tzy    时间: 2013-1-21 12:45
标题: 回复 #9 2011895866818 的帖子
谢谢,我也想过,没能实现,能否请您帮我编一段,谢谢,当然,分隔符是空格也可以。
作者: 2011895866818    时间: 2013-1-21 13:43
空格分割就简单多了

cat  (HD0,0)/text.txt | call :get
goto :eof
:get
set var1=%1 && set var2=%2 && set var3=%3 && 后面仿写
exit
作者: zxw    时间: 2013-1-21 13:53
标题: 回复 #7 qj_tzy 的帖子
抱歉,才上来抽空看了一下。给你写了一个。
假设参数值列表文件为:(hd0,0)/val.txt
变量列表文件为:(hd0,0)/var.txt
分隔符均为英文逗号<br />则调用方法为:
root (hd0,0)
%path%/test /val.txt /var.txt
test.7z (437 Bytes, 下载次数: 20)

[ 本帖最后由 zxw 于 2013-1-21 14:19 编辑 ]
作者: zxw    时间: 2013-1-21 13:57
如果参数值没有空格等号等,则可以更简单,不用上面这么复杂。
作者: qj_tzy    时间: 2013-1-21 14:44
标题: 回复 #11 2011895866818、#13 zxw 的帖子
非常感谢两位的指点,我先试试,若不清楚,再向两位请教!
作者: qj_tzy    时间: 2013-1-22 09:24
标题: 再回复 #11 2011895866818、#13 zxw 的帖子
昨晚按两位的指点,均测试成功,非常感谢!

因用空格分隔时,命令简单一些,能完全理解。而用逗号分隔时,批处理较难(对我来说),我基本未看懂,看来我对grub4dos的认知还是个皮毛,还得加强学习,zxw的以下这段,虽有注解,但未看懂。

假设参数值列表文件为:(hd0,0)/val.txt
变量列表文件为:(hd0,0)/var.txt
分隔符均为英文逗号<br />则调用方法为:
root (hd0,0)
%path%/test /val.txt /var.txt
test.7z (437 Bytes)

test的内容为:
!BAT
cat %1 | set s=
::分配内存,大小1K,并将地址赋给变量p
call Fn.50 1024
set p=%@retval%
call Fn.24 %p% 0 1024
call Fn.0 %p% "%s%"
cat --locate=\x2c --replace=\x20 %2
cat %2 | call :adds=
endlocal
::释放该内存区域
call Fn.51 %p%
set s=
set p=
exit

:adds
::执行字符串分隔,检测不到分隔符号就退出;否则,指针标记位置,备下次指针录用。
if not "%1"=="" call Fn.13 %p% "," || exit
call Fn.0 0 "%s" %@retval% | set %1= > nul
shift
set p=0
goto :adds

另再请教一个问题:
在未加参数时,cat命令默认只读取文本文件的首行,若各参数各存一行,如何读取出指定序号的行内容,或查找并显示出关键字所在的行内容,谢谢!
作者: 2011895866818    时间: 2013-1-22 12:59
cat读全部的
特别 cat 文件 | call  :标签 这后面要一个空格

如果参数没有 空格和等号 等特殊字符,行区分和空格区分是一样的。
作者: thttht    时间: 2013-1-22 15:15
原帖由 2011895866818 于 2013-1-21 13:43 发表
空格分割就简单多了

cat  (HD0,0)/text.txt | call :get
goto :eof
:get
set var1=%1 && set var2=%2 && set var3=%3 && 后面仿写
exit


这个代码全吗??我这里为什么不成功啊?请教了!
作者: zxw    时间: 2013-1-22 15:17
(HD0,0)
要小写为:
(hd0,0)




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