计数在批处理文件中不起作用

Vik*_*exe 2 scripting batch-file

我试图使用批处理文件(windows xp sp3)计算文件中的行数.这是我的代码:

@echo off

set line=0
FOR /F "usebackq delims=" %%a in (foo) do (
    set /A line+=1
    echo line count: %line%
    )

echo number of lines: %line%
Run Code Online (Sandbox Code Playgroud)

虽然它正确地计算了线条,但echo输出并不是我所期望的.我认为这与变量的延迟扩展有一些关系,所以我也尝试SetLocal EnableDelayedExpansion了,但这也没有用.

这是我得到的输出:

C:\fiddle\temp>a.bat
line count: 0
line count: 0
line count: 0
line count: 0
line count: 0
number of lines: 5
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?

仅供参考:在寻找这个问题的答案时,我深入研究了这个问题.

aph*_*ria 6

添加此行:

SETLOCAL ENABLEDELAYEDEXPANSION
Run Code Online (Sandbox Code Playgroud)

改变这一行:

echo line count: %line%
Run Code Online (Sandbox Code Playgroud)

对此:

echo line count: !line!
Run Code Online (Sandbox Code Playgroud)

因此,整个脚本将如下所示:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

set line=0
FOR /F "usebackq delims=" %%a in (foo) do (
    set /A line+=1
    echo line count: !line!
    )

echo number of lines: %line%
Run Code Online (Sandbox Code Playgroud)