中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助] 98 FOR 的 DO 后面要接一条以上的语句应该怎么办
作者:
标题: [求助] 98 FOR 的 DO 后面要接一条以上的语句应该怎么办 上一主题 | 下一主题
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『楼 主』:  [求助] 98 FOR 的 DO 后面要接一条以上的语句应该怎么办

运行环境是98最简启动盘(三文件)加了一个 98 的 FIND.EXE 文件 c:\num.txt 内容为 num=2 1.bat 内容为 @echo off FOR %%i in (1,2,3) do find "num=%%i" c:\num.txt>nul & if errorlevel 0 if not errorlevel 1 set num=%%i echo num=%num% 运行结果是 C:\>1 File not found - &File not found - ifFile not found - errorlevelFile not found 0File not found - ifFile not found - notFile not found - errorlevelFile not fo nd - 1File not found - setInvalid keyword File not found - &File not found - ifFile not found - errorlevelFile not found 0File not found - ifFile not found - notFile not found - errorlevelFile not fo nd - 1File not found - setInvalid keyword File not found - &File not found - ifFile not found - errorlevelFile not found 0File not found - ifFile not found - notFile not found - errorlevelFile not fo nd - 1File not found - setInvalid keyword num= C:\>_ 3.bat 内容为 @echo off find "num=1" c:\num.txt>nul if errorlevel 0 if not errorlevel 1 set num=1 find "num=2" c:\num.txt>nul if errorlevel 0 if not errorlevel 1 set num=2 find "num=3" c:\num.txt>nul if errorlevel 0 if not errorlevel 1 set num=3 echo num=%num% 运行结果是 C:\>3 num=2 C:\>_ 请问像这种情况,FOR 应该怎么写?非常感谢。 [ Last edited by NaturalJ0 on 2006-8-16 at 15:22 ]


2006-8-15 19:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 2 楼』:  

难道只能调用另一个 BAT ?有没办法就在这一个 BAT 中解决问题?


2006-8-16 10:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 3 楼』:  

  看了你的代码,意图似乎是读取num.txt的内容,type c:\num.txt不就成了吗?只是不知道type是不是98的内部命令。




尺有所短,寸有所长,学好CMD没商量。 考虑问题复杂化,解决问题简洁化。
2006-8-16 10:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 4 楼』:  

非常感谢楼上的回复。 我的愿意是要读里面的值给变量,后面的处理中想用变量。 [ Last edited by NaturalJ0 on 2006-8-16 at 10:37 ]


2006-8-16 10:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 5 楼』:  

@echo off
for /f "tokens=1,2 delims==" %%i in (c:\num.txt) do echo num=%%j
pause




尺有所短,寸有所长,学好CMD没商量。 考虑问题复杂化,解决问题简洁化。
2006-8-16 11:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 6 楼』:  

98 下的 FOR 没有 /f , DO 后面也不能用 () 这个 BAT 是在 98 启动盘环境下用,要根据读来的值不同,后面利用变量有不同的操作。还有其它办法么? [ Last edited by NaturalJ0 on 2006-8-16 at 11:44 ]


2006-8-16 11:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 7 楼』:  

  98的限制还真多啊,这也不行,那也不行的。没在98下遍过批处理,没辙了。




尺有所短,寸有所长,学好CMD没商量。 考虑问题复杂化,解决问题简洁化。
2006-8-16 12:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 8 楼』:  

是啊,以前的 DOS 里 FOR 命令功能少啊。 很感谢你花时间回复我。再等等其他人有没办法吧。实在不行,我也只能用 CALL 再去外部掉个 BAT 了,不过这样个人感觉挺不爽的。 = =b


2006-8-16 12:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chenall
银牌会员




积分 1276
发帖 469
注册 2002-12-23
来自 福建泉州
状态 离线
『第 9 楼』:  

不要使用find. 使用其它的程序.例如lmod之类的.可以提取文件内容作为变量的程序. 或者. 将c:\num.txt 内容修改成 set num=2 这样就不用外部命令了. type num.txt>~num.bat call ~num.bat del ~num.bat




QQ:366840202 chenall.net
2006-8-16 15:55
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (366840202)  编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 10 楼』:  

楼上好办法,非常感谢。


2006-8-16 16:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: