中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]for命令嵌套时token选项的问题
作者:
标题: [已解决]for命令嵌套时token选项的问题 上一主题 | 下一主题
xuleicz
初级用户





积分 26
发帖 26
注册 2009-1-4
状态 离线
『楼 主』:  [已解决]for命令嵌套时token选项的问题

这个代码的目标是
对于字符串avi wma mp3
当n=1,2,3时分别输出avi,wma,mp3
但我的代码是错的,想请教下错在哪

@echo off & setlocal EnableDelayedExpansion
set tp=avi wma mp3
for %%i in (%tp%) do (
set /a n+=1
for /f "tokens=!n! delims= " %%j in ("%tp%") do (
echo %%j
)
)
pause

***
已经找到了答案,可以在第一个for中用call调用第二个for

[ Last edited by xuleicz on 2009-2-7 at 12:09 ]

2009-2-6 23:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
heheguai
初级用户





积分 30
发帖 18
注册 2008-5-11
状态 离线
『第 2 楼』:  

对于这么短的字符为啥一定要用for呢,直接用字符截取快的多啊!
set tp=avi wma mp3
%tp:~0,3%

2009-2-7 00:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 3 楼』:  

这样更灵活一点:
set tp1=avi
set tp2=wma
set tp3=mp3
set /p n=输入[1,2,3]
call :sub %n%
goto :eof

:sub
echo %tp%1%
goto :eof

或者开始变量延迟后这样用:
set tp1=avi
set tp2=wma
set tp3=mp3
set /p n=输入[1,2,3]
echo !tp%n%!



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-2-7 00:57
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
xuleicz
初级用户





积分 26
发帖 26
注册 2009-1-4
状态 离线
『第 4 楼』:  



2009-2-7 09:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xuleicz
初级用户





积分 26
发帖 26
注册 2009-1-4
状态 离线
『第 5 楼』:  

我在4#的回复怎么改不了

3楼的第二个方法倒是个好方法。其实我是要这样的效果:
tp和ass其实很长
使两个命令同步
(以下代码是错误的)

setlocal EnableDelayedExpansion
tp=avi wmv mp3
ass=avifile wmvmedia mp3music
for %%i in (%tp%) do (
set /a n+=1
for /f "tokens=!n! delims= " %%a in ("%tp%") do com1 %%a
for /f "tokens=!n! delims= " %%b in ("%tp%") do com2 %%b
)

[ Last edited by xuleicz on 2009-2-7 at 12:08 ]

2009-2-7 11:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: