无忧启动论坛

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

[求助] 如何用grub4dos命令读出文本文件中的参数值并赋给不同的变量

[复制链接]
跳转到指定楼层
1#
发表于 2013-1-6 21:42:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何用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 编辑 ]
2#
 楼主| 发表于 2013-1-7 22:01:03 | 只看该作者

回复 #1 qj_tzy 的帖子

自行顶起!

我因有一应用,想达到这一目的,不知GRUB4DOS能否达到这一目的,若能,还望各位高手不吝指教,非常感谢!
回复

使用道具 举报

3#
 楼主| 发表于 2013-1-21 09:13:03 | 只看该作者
顶一下,诚请各位高人解答!
回复

使用道具 举报

4#
发表于 2013-1-21 09:18:39 | 只看该作者
帮顶,应该用外部命令可以实现,具体要等高人出现……
回复

使用道具 举报

5#
发表于 2013-1-21 09:42:29 | 只看该作者
很简单,用好cat命令即可。
回复

使用道具 举报

6#
发表于 2013-1-21 09:53:25 | 只看该作者

回复 #5 zxw 的帖子

他的意思是说,逗号与逗号之间的字符有多少不确定,有多少个逗号也不确定,Z大能否给出个例子?
回复

使用道具 举报

7#
 楼主| 发表于 2013-1-21 09:54:47 | 只看该作者

回复 #5 zxw 的帖子

我曾用cat试过,由于对其理解不够,未能成功,能否请您帮我编一段,以解我之急,谢谢!
回复

使用道具 举报

8#
 楼主| 发表于 2013-1-21 10:06:47 | 只看该作者

回复 #6 527104427 的帖子

若逗号个数确定,但逗号间的字符个数不确定,能否实现?

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

[ 本帖最后由 qj_tzy 于 2013-1-21 10:08 编辑 ]
回复

使用道具 举报

9#
发表于 2013-1-21 12:39:30 | 只看该作者
用cat查找关键字:“,”
得到位置数字,用减法分割.
在用cat读取特定段.
回复

使用道具 举报

10#
 楼主| 发表于 2013-1-21 12:45:39 | 只看该作者

回复 #9 2011895866818 的帖子

谢谢,我也想过,没能实现,能否请您帮我编一段,谢谢,当然,分隔符是空格也可以。
回复

使用道具 举报

11#
发表于 2013-1-21 13:43:49 | 只看该作者
空格分割就简单多了

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

使用道具 举报

12#
发表于 2013-1-21 13:53:55 | 只看该作者

回复 #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 编辑 ]
回复

使用道具 举报

13#
发表于 2013-1-21 13:57:23 | 只看该作者
如果参数值没有空格等号等,则可以更简单,不用上面这么复杂。
回复

使用道具 举报

14#
 楼主| 发表于 2013-1-21 14:44:41 | 只看该作者

回复 #11 2011895866818、#13 zxw 的帖子

非常感谢两位的指点,我先试试,若不清楚,再向两位请教!
回复

使用道具 举报

15#
 楼主| 发表于 2013-1-22 09:24:02 | 只看该作者

再回复 #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命令默认只读取文本文件的首行,若各参数各存一行,如何读取出指定序号的行内容,或查找并显示出关键字所在的行内容,谢谢!
回复

使用道具 举报

16#
发表于 2013-1-22 12:59:27 | 只看该作者
cat读全部的
特别 cat 文件 | call  :标签 这后面要一个空格

如果参数没有 空格和等号 等特殊字符,行区分和空格区分是一样的。
回复

使用道具 举报

17#
发表于 2013-1-22 15:15:55 | 只看该作者
原帖由 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


这个代码全吗??我这里为什么不成功啊?请教了!
回复

使用道具 举报

18#
发表于 2013-1-22 15:17:48 | 只看该作者
(HD0,0)
要小写为:
(hd0,0)
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-22 22:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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