中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
作者:
标题: 输出for中增强变量的问题 上一主题 | 下一主题
yoyodos
初级用户




积分 128
发帖 59
注册 2007-9-15
状态 离线
『楼 主』:  输出for中增强变量的问题

想输出for增强变量的不同结果。 @echo off setlocal enabledelayedexpansion for %%a in (f d p n) do ( for %%k in (test.txt) do echo %%~%%ak ) pause 我把%%a替换成f就没有问题,但是用变量就不可以,为什么啊? [ Last edited by yoyodos on 2007-9-23 at 10:12 AM ]


2007-9-22 22:51
查看资料  发送邮件  发短消息  网志  OICQ (52721292)  编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 2 楼』:  

Originally posted by yoyodos at 2007-9-22 22:51: 想输出for增强变量的不同结果。 @echo off setlocal enabledelayedexpansion for %%a in (f d p n) do ( for %%k in (test.txt) do echo %%~%%ak;) ) pause 我把%%a替换成f就 ...
看这个啊::
@echo off
setlocal enabledelayedexpansion
for  %%a in (f d p n) do (
  call :out %%a
)
pause&exit

:out
 for /f %%k in (test.txt) do ( echo %%~%1k &pause&echo.)
以后碰到类似的问题,就用call跳转吧! 这也不失是一种解决办法,而且有时会使得代码清晰. 呵呵...太多的call就看着头晕啊..小心!


2007-9-23 00:05
查看资料  发短消息  网志   编辑帖子  回复  引用回复
yoyodos
初级用户




积分 128
发帖 59
注册 2007-9-15
状态 离线
『第 3 楼』:  

谢谢拉,我试了半天都不行,看来以后得多考虑用call,哈哈,虽然这里面的道理还不懂。。。


2007-9-23 10:11
查看资料  发送邮件  发短消息  网志  OICQ (52721292)  编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 4 楼』:  

call /? 再搜索: 变量延迟


2007-9-23 12:27
查看资料  发短消息  网志   编辑帖子  回复  引用回复
lzmuhioin
初级用户





积分 51
发帖 24
注册 2007-9-18
状态 离线
『第 5 楼』:  

请问scriptor兄: %%~%1k这个是什么意思,我知道~是变量偏移,但我这里就看不懂了,费解! 能解释一下吗?>? 我同时也试了两次,确实,是需要加CALL才行,CALL在这里起到了什么作用呢? [ Last edited by lzmuhioin on 2007-9-23 at 11:14 PM ]


2007-9-23 23:13
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
yoyodos
初级用户




积分 128
发帖 59
注册 2007-9-15
状态 离线
『第 6 楼』:  

哈哈,%%~%%ak 和 echo %%~%1k 这两个变量使用可以说完全一样得。 只是第一个程序用了变量来表示(%%a),第二个程序用一个形式参数来表示(%1)。这是我能看出来唯一得差别了。 结论:%%~fi这样的变量不能用变量来替代“f”。 不知道我这样理解对不对? ^_^


2007-9-23 23:28
查看资料  发送邮件  发短消息  网志  OICQ (52721292)  编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 7 楼』:  

是这样的,可以这么理解 你可以搜索call的用法 因为我不是搞计算机的 也不是学编程的 对于细节我不甚了解 call "呼叫"----> "调用" 后面有标号 ":xxxx"----->这个就是标号 标号后可以接参数 a b c ... 至于多少个,我不知道,是不是10个,还是N个,我不清楚. call 后面还可以接上 脚本外的文件 如: a.txt 这时,源程序就暂停,知道你关闭a.txt call并不中断源程序,call后面一旦执行完,返回原程序, 这时返回的可以是空,也可以有子程序的值------>子程序或源程序中被call调用的标号下的程序返回值 我就知道这么多 你多搜索,多用它,也能体会到的


2007-9-24 00:30
查看资料  发短消息  网志   编辑帖子  回复  引用回复
yoyodos
初级用户




积分 128
发帖 59
注册 2007-9-15
状态 离线
『第 8 楼』:  

我对类似于 %%~%%ak 这样变量里面含有变量的,还有类似这样的 set str=!str:变量1=变量2! 变量含变量的就看着晕,还有变量延迟的范围也有点晕,scriptor兄有啥经验没?哈哈


2007-9-24 11:08
查看资料  发送邮件  发短消息  网志  OICQ (52721292)  编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 9 楼』:  

不是太清楚 像set str=!str:变量1=变量2! 我没有使用过 经验是死的: 我一般就是%a% 不行 就!a! 还不行,干脆就 call 你可以请教版上的高人们 我只是知道一点点的 经验很有限的


2007-9-26 00:58
查看资料  发短消息  网志   编辑帖子  回复  引用回复
yoyodos
初级用户




积分 128
发帖 59
注册 2007-9-15
状态 离线
『第 10 楼』:  

恩,谢谢哦,学习了下变量延迟还是有点收获的


2007-9-26 01:06
查看资料  发送邮件  发短消息  网志  OICQ (52721292)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: