标题: [文本处理] [已解决]我这样使用批处理for命令为什么只能赋值一次? [打印本页]
作者: 迷彩的SF 时间: 2011-11-4 13:10 标题: [已解决]我这样使用批处理for命令为什么只能赋值一次?
本帖最后由 迷彩的SF 于 2011-11-6 11:53 编辑
1.txt文件的内容如下:- aa
- ccccccccccccccccccccccccccccccccccccccc
- eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
- ggggggggggggggggggggggggggggggggggggggg
- wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
复制代码
我想用如下代码读取并显示每行字数:- @echo off
- setlocal enabledelayedexpansion
- set num=0
- for /f %%a in (1.txt) do (
- set num1=%%a
-
- :do
- if not "!num1:~%num%,1!" equ "" (
-
- set /a num+=1 & goto do
- ) else (
- echo The number of this sentence is %num%
- )
- echo Press any key to continue......
- pause>nul
- )
- echo;Over
- pause>nul
复制代码
但是在测试中我发现for的赋值只能执行一次,在显示 The number of this sentence is 2 之后紧接着就显示Over,随后按任意键就退出程序了,希望那位可以解释下,谢谢
作者: awk 时间: 2011-11-4 17:04
不要在for循环内部定义标签
作者: 601997526 时间: 2011-11-4 20:40
把标签定在for外部吧,再在for内部用call命令调用
作者: 迷彩的SF 时间: 2011-11-5 12:39
那么这是什么原因呢?
作者: hankerer 时间: 2011-11-5 12:44
那么这是什么原因呢?
迷彩的SF 发表于 2011-11-5 12:39
没有为什么,就是这么规定的
作者: hfg1977 时间: 2011-11-5 14:38
循环体内使用goto代表循环体的结束,无论你使用多少重嵌套.
作者: wc726842270 时间: 2011-11-5 16:07
回复 5# hankerer
这也谈不上什么规定,只不过理解要从CPU和内存上放手了,也就是“计算机原理”,
PS:我所说的只是个人观点
作者: 迷彩的SF 时间: 2011-11-6 11:51
谢谢楼上的各位,我弄清楚了.
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |