[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理for语句末尾的标签无法跳转

本人在写代码的时候经常遇见这个问题,现在才想起来发帖问问。比如,代码如下:
  1. for /f %%a (a.txt) do (
  2.   ........................
  3. .........................
  4.   if ........goto next
  5. ...........................
  6. .........................
  7. :next)
复制代码
为什么会提示此时不能有)?
有的时候在for语句里判断某个条件,当成立的时候就到for的末尾执行下一个循环,为什么标签后没有任何句子的话会报错呢。如果有句子,标签处于for语句体中间,又该需要注意什么呢?似乎嵌套一个for语句并在里层for中跳转到外层李的标签的时候,往往最外一层for只能执行一次,无法执行接下来的循环,为什么?

[ 本帖最后由 Lumiere 于 2009-7-28 23:42 编辑 ]
1

评分人数

    • keen: 感谢主动给标题标注[已解决]字样PB + 2
Still with wax

回复 2楼 的帖子

管理员能给我解释一下原因么,这样的话帖子结了也难看吧?呵呵
Still with wax

TOP

自顶,希望论坛的达人们早日看到并给一个详细的解答,多谢。
Still with wax

TOP

回复 5楼 的帖子

标签:next是在for循环体内,而且一开始如果将)作为标签的一部分的话,for的解释会出错,直接退出的,不应该是那种现象。标签应该就是一个标示性的东西,不都说相当于rem或者::么?
Still with wax

TOP

回复 7楼 的帖子

那就是说,不管单个for还是嵌套的,都不能用标签?
Still with wax

TOP

回复 9楼 的帖子

没说不信啊,我就是在用的过程中遇到问题了才问撒,主要是为了弄清楚。好吧,结贴了,多谢各位前辈跟帖。
Still with wax

TOP

回复 12楼 的帖子

呵呵大家都是讨论,千万别伤了和气啊。
Still with wax

TOP

回复 11楼 的帖子

多谢回复,陈述自己的观点和发现,有借鉴意义。
Still with wax

TOP

回复 13楼 的帖子

多谢热心跟帖给链接。我看了链接,前面都懂了,可是后来你又给了几个代码,类似(
(
:a
::b
echo absdf
)>abc.txt
这里就不明白了,以::开头的标签(或者注释)在下面就会出错,儿在a:之前就没问题。能否讲解下?你在CN-DOS上说有时间在讲解,所以没办法看明白。
Still with wax

TOP

回复 14楼 的帖子

我觉得什么跳进组合之类的说法确实不怎么恰当。不过仁兄这个帖子一针见血指出了问题的本质。这才是我想要的答案,我也完全弄明白了。之前你给的什么组合不组合的,即使可以了解也不能揪出问题的本质。对于我来说是知其然不知其所以然。现在看你这个帖子,从根本上明白了为什么在for里面用标签会出错,还是预处理。难怪,for有标签跳转的时候只执行一次,其实那只是表象,真正的是for命令已经被强制失效退出了,或者说整个标签段经预处理后已经不在for的语义里了。
再次感谢!
Still with wax

TOP

回复 19楼 的帖子

你说的是对的,我已经在18楼的帖子里说过了。
Still with wax

TOP

返回列表