Board logo

标题: [文本处理] 批处理for循环里边数值变量的值为何始终是零? [打印本页]

作者: lj84831253    时间: 2010-4-12 22:50     标题: 批处理for循环里边数值变量的值为何始终是零?

  1. set /a N=0
  2. for /f "delims=" %%a in (XT.txt) do (
  3. set /a N+=1
  4. echo %N%
  5. )
  6. pause
复制代码
首先,XT.txt里边很多行,但是为什么输出的N的值都是0呢?
请教老鸟们。。谢谢。
作者: jcy0307    时间: 2010-4-12 22:55

  1. @echo off
  2. set a=0
  3. for /f "delims=" %%i in (a.txt) do set /a a=a+1
  4. echo 文本中共有%a%行!
  5. pause
复制代码

[ 本帖最后由 jcy0307 于 2010-4-12 23:01 编辑 ]
作者: x9tiancmd    时间: 2010-4-12 23:24

原帖由 lj84831253 于 2010-4-12 22:50 发表
代码如下:
set /a N=0
for /f "delims=" %%a in (XT.txt) do (
set /a N+=1
echo %N%
)
pause
首先,XT.txt里边很多行,但是为什么输出的N的值都是0呢?
请教老鸟们。。谢谢。

  
    楼上的是一种做法,  其实还有一种做法

把  echo %N%   改写成 call echo %%N%%

  另: 只要不是循环使用的代码, 像你那, set /a N=0  可以不要

[ 本帖最后由 x9tiancmd 于 2010-4-12 23:26 编辑 ]
作者: hanyeguxing    时间: 2010-4-12 23:34

原帖由 lj84831253 于 2010-4-12 22:50 发表
代码如下:
set /a N=0
for /f "delims=" %%a in (XT.txt) do (
set /a N+=1
echo %N%
)
pause
首先,XT.txt里边很多行,但是为什么输出的N的值都是0呢?
请教老鸟们。。谢谢。

变量延迟的问题。你可以搜索相关的主题
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (XT.txt) do (
  3. set /a N+=1
  4. echo !N!
  5. )
  6. pause
复制代码

[ 本帖最后由 hanyeguxing 于 2010-4-12 23:38 编辑 ]
作者: Batcher    时间: 2010-4-12 23:39

多看教程:批处理中的变量延迟扩展、变量嵌套
http://bbs.bathome.net/thread-2899-1-1.html
作者: lj84831253    时间: 2010-4-13 12:10

原帖由 jcy0307 于 2010-4-12 22:55 发表
@echo off
set a=0
for /f "delims=" %%i in (a.txt) do set /a a=a+1
echo 文本中共有%a%行!
pause
能不能帮我讲解下call echo %%N%%
是什么原理呢?谢谢!~
作者: GNU    时间: 2010-4-13 12:17     标题: 回复 6楼 的帖子

多看几遍5楼的教程就明白了
作者: x9tiancmd    时间: 2010-4-13 15:51

刚准备回,   GUN兄就以经说了,  我这就当着顶贴吧汗( ̄口 ̄)!!
作者: todayambition    时间: 2010-4-13 18:34

好  到现在总算知道变量嵌套咋用了




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2