中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何使用FOR和FIDNDTR来改变如下代码
作者:
标题: 如何使用FOR和FIDNDTR来改变如下代码 上一主题 | 下一主题
wfy150
初级用户




积分 82
发帖 34
注册 2008-4-29
来自 江西
状态 离线
『楼 主』:  如何使用FOR和FIDNDTR来改变如下代码

我想把以下代码中Delay后面的数字都改成30,而且不改变它们的位置
MoveTo 7,68
MoveTo 81,91
KeyDown 16,1
KeyDown 17,1
Delay 78
KeyUp 16,1
Delay 16
KeyUp 17,1
Delay 78
KeyDown 17,1
KeyDown 16,1
Delay 62
KeyUp 17,1
Delay 1562
KeyDown 49,1
Delay 157
KeyUp 49,1

2008-5-10 19:06
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (536589936)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 2 楼』:  


@echo off
for /f "tokens=1* delims= " %%a in (a.txt) do (
   if /i "%%a"=="delay" (echo %%a 30) else echo %%a %%b
)
pause


   此帖被 +3 点积分    点击查看详情   
评分人:【 wfy150 分数: +1  时间:2008-5-10 19:39
评分人:【 nipo 分数: +2  时间:2008-5-10 23:53




致精致简!
2008-5-10 19:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wfy150
初级用户




积分 82
发帖 34
注册 2008-4-29
来自 江西
状态 离线
『第 3 楼』:  

问下怎么把它输出的结果保存到.TXT中

2008-5-10 20:47
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (536589936)  编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by wfy150 at 2008-5-10 20:47:
问下怎么把它输出的结果保存到.TXT中

在每个 echo 命令后面加上一个重定向符(>>)即可。

2008-5-10 22:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
nipo
中级用户





积分 228
发帖 106
注册 2008-4-26
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by 26933062 at 2008-5-10 07:14 PM:
@echo off
for /f "tokens=1* delims= " %%a in (a.txt) do (
   if /i "%%a"=="delay" (echo %%a 30) else echo %%a %%b
)
pause

领教了,佩服!


有一点不懂,请指教:~~~%%b事先没有定义,它是怎样产生作用的呢?

2008-5-10 23:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
nipo
中级用户





积分 228
发帖 106
注册 2008-4-26
状态 离线
『第 6 楼』:  

晕!

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

    会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将
    每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或
    空格定界符号。请注意,这个 for 程序体的语句引用 %i 来
    取得第二个符号,引用 %j 来取得第三个符号,引用 %k
    来取得第三个符号后的所有剩余符号。对于带有空格的文件
    名,您需要用双引号将文件名括起来。为了用这种方式来使
    用双引号,您还需要使用 usebackq 选项,否则,双引号会
    被理解成是用作定义某个要分析的字符串的。

    %i 专门在 for 语句中得到说明,%j 和 %k 是通过
    tokens= 选项专门得到说明的。您可以通过 tokens= 一行
    指定最多 26 个符号,只要不试图说明一个高于字母 'z' 或
    'Z' 的变量。请记住,FOR 变量是单一字母、分大小写和全局的;而且,
    同时不能有 52 个以上都在使用中。

   此帖被 +4 点积分        点击查看详情   
评分人:【 moniuming 分数: +4  时间:2008-5-11 00:52


2008-5-11 00:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 7 楼』:  

我更喜欢自己看帮助去解决问题的人,加分鼓励!!!

2008-5-11 00:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
nipo
中级用户





积分 228
发帖 106
注册 2008-4-26
状态 离线
『第 8 楼』:  

谢谢鼓励!~~~本来是提了一个愚蠢的问题。呵呵^-^

2008-5-11 01:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wfy150
初级用户




积分 82
发帖 34
注册 2008-4-29
来自 江西
状态 离线
『第 9 楼』:  

原来也想这么干 忘了在给前面一个ECHO加重定向了.谢谢斑竹了

2008-5-11 01:45
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (536589936)  编辑帖子  回复  引用回复
youling126
初级用户





积分 87
发帖 42
注册 2008-5-7
状态 离线
『第 10 楼』:  

完整的答案应该是这样吧
@echo off
cd.>b.txt
for /f "tokens=1* delims= " %%a in (a.txt) do (
   if /i "%%a"=="delay" (echo %%a 30 >>b.txt) else echo %%a %%b>>b.txt
)
ren a.txt a_old.txt
ren b.txt a.txt
pause

2008-5-11 04:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: