Scripting 计数不是';t在批处理文件中工作

Scripting 计数不是';t在批处理文件中工作,scripting,batch-file,Scripting,Batch File,我试图使用批处理文件(WindowsXPSP3)计算文件中的行数。 这是我的密码: @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% 虽然它正确地计算了行数,但是echo输出并不是我所期望的。我认为这与变量的延迟扩展有关,所以我也尝试了setloca

我试图使用批处理文件(WindowsXPSP3)计算文件中的行数。 这是我的密码:

@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%
虽然它正确地计算了行数,但是
echo
输出并不是我所期望的。我认为这与变量的延迟扩展有关,所以我也尝试了
setlocalenabledayedexpansion
,但这也不起作用

以下是我得到的输出:

C:\fiddle\temp>a.bat
line count: 0
line count: 0
line count: 0
line count: 0
line count: 0
number of lines: 5
这里怎么了

仅供参考:我是在寻找问题答案时进入这一行的。

添加这一行:

SETLOCAL ENABLEDELAYEDEXPANSION
echo line count: %line%
更改此行:

SETLOCAL ENABLEDELAYEDEXPANSION
echo line count: %line%
为此:

echo line count: !line!
因此,整个脚本将如下所示:

@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%

我用来计算行数的批处理脚本如下所示。使用输入文件作为参数,从命令行调用它

@echo off & setLocal EnableDELAYedeXpansion

for /f "tokens=1 delims=[]" %%a in ('find /v /c "" ^< %1') do (
echo %~n1 %%a
)
@echo off&setLocal EnableDELAYedeXpansion
对于/f“tokens=1 delims=[]”%%a in('find/v/c”“^<%1'),请执行以下操作(
回波%%n1%%a
)