中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-04 07:54
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 变量的变量??子程序中??
可打印版本  745 / 7
第1楼 bright2k 发表于 2007-04-25 02:51
初级用户 发帖 8 积分 22
变量的变量??子程序中??
set a=hello
set b=a
echo %a% // 显示hello
echo %b% // 显示a

请如何呢能通过b得到a的值,
即类似echo %%b%%,,显示hello

还有,在子程序中该如何处理呢?
例子见3楼


[ Last edited by bright2k on 2007-4-24 at 03:04 PM ]
第2楼 lxmxn 发表于 2007-04-25 03:03
版主 发帖 4,938 积分 11,386
以“变量延迟”或者“SetLocal EnableDelayedExpansion”为关键字搜索一下论坛,应该就可以找到问题的解决办法。

下面这个是个示范:
第3楼 bright2k 发表于 2007-04-25 03:14
初级用户 发帖 8 积分 22
那如果是在子程序里改如何处理呢?
比如:
call :sub b

:sub
set %1=hello
echo %1 // 显示b,如何能显示%b%,即hello?
goto :eof
第4楼 ansipeter 发表于 2007-04-25 03:24
中级用户 发帖 130 积分 269
第5楼 bright2k 发表于 2007-04-25 04:15
初级用户 发帖 8 积分 22
搞定了,嘿嘿

call :sub b

:sub
set %1=hello
call echo %%%1%%
goto :eof
第6楼 bright2k 发表于 2007-04-25 04:19
初级用户 发帖 8 积分 22
又有新问题了,call里面不能用if等命令。。。。还要再写个子程序么??
第7楼 lxmxn 发表于 2007-04-25 07:27
版主 发帖 4,938 积分 11,386
Re bright2k:

call 后面接的标签的话,标签里面是可以用if命令的。
第8楼 flyinspace 发表于 2007-04-25 07:36
银牌会员 发帖 517 积分 1,206
呵呵,我也曾经碰到过这个问题呢。

后来无聊用到了 set /a 解决了这个问题。

然后又发现 若不是 数字的话会出问题。

然后研究了变量延迟才用和lxmxn一样的方法解决了问题。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023