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

[文本处理] [已解决]我这样使用批处理for命令为什么只能赋值一次?

本帖最后由 迷彩的SF 于 2011-11-6 11:53 编辑

1.txt文件的内容如下:
  1. aa
  2. ccccccccccccccccccccccccccccccccccccccc
  3. eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
  4. ggggggggggggggggggggggggggggggggggggggg
  5. wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
  6. zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
复制代码
我想用如下代码读取并显示每行字数:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set num=0
  4. for /f %%a in (1.txt) do (
  5.     set num1=%%a
  6.    
  7.     :do
  8.     if not "!num1:~%num%,1!" equ "" (
  9.        set /a num+=1 & goto do
  10.        ) else (
  11.        echo The number of this sentence is %num%
  12.        )
  13.     echo Press any key to continue......
  14.     pause>nul
  15. )
  16. echo;Over
  17. pause>nul
复制代码
但是在测试中我发现for的赋值只能执行一次,在显示 The number of this sentence is 2 之后紧接着就显示Over,随后按任意键就退出程序了,希望那位可以解释下,谢谢
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

不要在for循环内部定义标签

TOP

把标签定在for外部吧,再在for内部用call命令调用

TOP

那么这是什么原因呢?

TOP

那么这是什么原因呢?
迷彩的SF 发表于 2011-11-5 12:39


没有为什么,就是这么规定的

TOP

循环体内使用goto代表循环体的结束,无论你使用多少重嵌套.
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

回复 5# hankerer


    这也谈不上什么规定,只不过理解要从CPU和内存上放手了,也就是“计算机原理”,
PS:我所说的只是个人观点
1

评分人数

    • CrLf: 乐于助人PB + 3
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

谢谢楼上的各位,我弄清楚了.

TOP

返回列表