中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [请教]变量延迟的应用为什么失败
作者:
标题: [请教]变量延迟的应用为什么失败 取消高亮 | 上一主题 | 下一主题
zhaxi
初级用户





积分 112
发帖 40
注册 2006-6-23
状态 离线
『楼 主』:  [请教]变量延迟的应用为什么失败

@echo off echo. echo. echo 192.168.10.16上有以下最新的服务端供下载: dir \\192.168.1.1\rel_inc(增量发布流)\svr /ON /A-D /B /-D /P >%zhx%\Temp\earlist.txt setlocal ENABLEDELAYEDEXPANSION set /a num=1 for /f "tokens=1 delims= " %%i in (%zhx%\Temp\earlist.txt) do (set file=%%i set /a num+=1 echo ◇%num% %%i ) endlocal echo. pause ------------------------------------------------------------------ 我想通过上述语句实现这样的显示结果: ◇1 a.txt ◇2 b.txt ◇3 c.txt ◇4 d.txt 但我实际执行结果却是: ◇1 a.txt ◇1 b.txt ◇1 c.txt ◇1 d.txt 也就是说明变量num没有延迟扩展,而是for语句预读时就赋予了1。 请高手帮忙改正。谢谢。 [ Last edited by zhaxi on 2006-6-27 at 22:41 ]


2006-6-27 22:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhaxi
初级用户





积分 112
发帖 40
注册 2006-6-23
状态 离线
『第 2 楼』:  

晕。刚才查了半天。是不是由于我应该把%num%改成 !num! 啊。 哈哈。


2006-6-27 22:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bagpipe
银牌会员

DOS联盟捡破烂的


积分 1144
发帖 425
注册 2005-10-20
来自 北京
状态 离线
『第 3 楼』:  

@echo off setlocal for /f "delims=" %%a in (1.txt) do ( set /a aa+=1 call :hi %%a ) endlocal goto :eof :hi echo %aa% %* goto :eof 有的时候也可以不用延迟环境变量来实现的.......... [ Last edited by bagpipe on 2006-6-28 at 11:17 ]


2006-6-28 08:54
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
zhaxi
初级用户





积分 112
发帖 40
注册 2006-6-23
状态 离线
『第 4 楼』:  

还有这种做法啊。谢谢大哥了。通过一个call跳到for外面就可以实现aa的重新赋值了啊。


2006-6-28 12:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ruisoft
初级用户





积分 93
发帖 57
注册 2007-3-12
状态 离线
『第 5 楼』:  

通过一个call跳到for外面后如何跳回for???


2007-6-11 15:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
stornager
中级用户

scriptlover


积分 328
发帖 131
注册 2007-3-25
状态 离线
『第 6 楼』:  

看3楼的代码,call本来就在for内。




scriptlover Be with script forever!!
2007-6-11 15:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ieutk
初级用户




积分 107
发帖 48
注册 2006-11-30
状态 离线
『第 7 楼』:  

Originally posted by ruisoft at 2007-6-11 03:09 PM: 通过一个call跳到for外面后如何跳回for???
goto :eof




她希望我把粪土变黄金,我希望她视黄金如粪土!
2007-6-11 23:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wufengseu
新手上路





积分 10
发帖 4
注册 2008-1-8
状态 离线
『第 8 楼』:  

this can be done as follows: @echo off echo. echo. echo. setlocal ENABLEDELAYEDEXPANSION set /a num=0 for /f "tokens=1 delims= " %%i in (1.txt) do (set file=%%i set /a num= num-1 echo ◇!num! %%i.txt ) endlocal echo. pause [ Last edited by wufengseu on 2008-1-8 at 10:02 PM ]


2008-1-8 22:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: