![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-11 10:48 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [己结]关于延迟变量中的变量延迟问题 |
| 可打印版本 649 / 9 |
| 第1楼 wjcing | 发表于 2009-02-22 18:07 |
| 初级用户 发帖 59 积分 71 | |
|
[己结]关于延迟变量中的变量延迟问题 set /a _LYT=0
for /L %%i in (1,1,10) do ( set /a _LYT+=1 for %%x in (!dd!) do ( if defined Yl!_LYT! ( set Yl!_LYT!=!Yl%_LYT%! %%x) else set Yl!_LYT!=%%x ) !Yl%_LYT%!变量中含有需要延迟的变量%_LYT%,延迟变量中又不能加延迟变量, 请问如何能让Yl!_LYT!变量加上以前的值? ) [ Last edited by wjcing on 2009-2-23 at 15:50 ] |
|
| 第2楼 wjcing | 发表于 2009-02-23 00:34 |
| 初级用户 发帖 59 积分 71 | |
|
郁闷。。没个人...
|
|
| 第3楼 wjcing | 发表于 2009-02-23 12:49 |
| 初级用户 发帖 59 积分 71 | |
|
@echo oN
setlocal enabledelayedexpansion set /a _LYT=0 for /L %%i in (1,1,2) do ( for %%x in (01 02 03 04 05 06) do ( set /a _LYT=%%x set /a _T8=!_LYT! if defined Yl!_LYT! ( set Yl!_LYT!=!Yl%_T8%! %%x) else set Yl!_LYT!=%%x ) ) set pause 1楼的例子可能有点问题,,现在这个例子执行到第二次时,己经定义了变量:set Yl!_LYT!=!Yl%_T8%! %%x,得到的结果为:Yl1= 01,并没有把第一次的01加上去, 我想要的结果是"Yl1=01 01",请问各位高手有什么办法能把%_T8%延迟到,例如我循环到06时,_T8为6,我就要取出变量Yl 6的值,谢谢。 注:我知道set Yl!_LYT!=!Yl%%x! %%x 是可以的,但我在其它方法中没有这个%%x变量,所以我想知道有没有其它方法。 [ Last edited by wjcing on 2009-2-23 at 12:51 ] |
|
| 第4楼 netbenton | 发表于 2009-02-23 12:53 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
if defined Yl!_LYT! (call set Yl!_LYT!=!Yl%%_T8%%! %%x) else set Yl!_LYT!=%%x
改成这样看看行吗? |
|
| 第5楼 wjcing | 发表于 2009-02-23 13:24 |
| 初级用户 发帖 59 积分 71 | |
|
终于有人了。。谢谢。。不过还是不行。。。
|
|
| 第6楼 5yue5 | 发表于 2009-02-23 13:32 |
| 初级用户 发帖 34 积分 69 | |
|
abc set tt=abc
set tt=%tt%123 ------------------- setlocal enabledelayedexpansion set tt=abc set tt=!tt!123 变量就对应一个内存的存储单元,你用新的值去冲掉旧的值就可以了 在for语句中,只有延迟变量可以进行值的传递。 ---------------------------------------------------------------------------- 你的意思是要把一个外面的值传递到你的嵌套的变量里面,不知道我这样理解对不对? @echo off set q=111 set tt=123 setlocal enabledelayedexpansion set ss=q%tt% set rr=!ss! echo !ss! echo !rr! 如过你说的是这个意思的话,就得把你的%%改为!! 才可以在你的for中传递呀。 [ Last edited by 5yue5 on 2009-2-23 at 14:38 ] |
|
| 第7楼 wjcing | 发表于 2009-02-23 13:46 |
| 初级用户 发帖 59 积分 71 | |
Originally posted by 5yue5 at 2009-2-23 01:32 PM: 你的我试了,这样是不行的,因为我所要取的变量的变量名中含有需要延迟的变量,如:!Yl%_T8%!,其中的%_T8%是根据循环动态取的,如循环第一次为YL1,第二次为YL2..... |
|
| 第8楼 wxcute | 发表于 2009-02-23 14:53 |
| 中级用户 发帖 211 积分 458 | |
|
你的书写格式很乱,让人看着累。不然早做出来了,呵呵^_^
call set Yl!_LYT!=%%Yl!_T8!%% %%x |
|
| 第9楼 wjcing | 发表于 2009-02-23 15:17 |
| 初级用户 发帖 59 积分 71 | |
Originally posted by wjcing at 2009-2-23 01:24 PM: 呵呵,,我的意思是这样的。。。 @echo on setlocal enabledelayedexpansion set q=111 set tt=123 set q123=test set ss=q%tt% set rr=!ss! echo !ss! echo !rr! pause 即把q123变量的值输出, |
|
| 第10楼 wjcing | 发表于 2009-02-23 15:22 |
| 初级用户 发帖 59 积分 71 | |
Originally posted by wjcing at 2009-2-23 01:46 PM: 呵呵。搞定了。。非常感谢。。原来是我表达的不太清楚。。。不好意思了, call set Yl!_LYT!=%%Yl!_T8!%% %%x 它第一次是不是选扩展成如下:%YL8% X的值 再call %YL8% 出它的值? 谢谢。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |