This script was found in one of the alt.msdos.* newsgroups, some time ago. I have found it useful in the past, and hope you do, too.
The syntax for using LineCnt.bat is:
[call] LineCnt FileName Lines
Where:
FileName is the fully qualified file name of the text file.
Lines is a call directed numeric environment variable that will contain the number of lines in FileName.
LineCnt.bat contains:
@echo off
if {%2}=={} @echo LineCnt FileName Lines&goto :EOF
set /a %2=0
if not exist %1 LineCnt FileName Lines - %1 NOT FOUND.&goto :EOF
if exist "%TEMP%\LineCnt.vbs" goto doit
@echo Dim objArgs>"%TEMP%\LineCnt.vbs"
@echo Set WshShell = CreateObject("WScript.Shell")>>"%TEMP%\LineCnt.vbs"
@echo Set objArgs = Wscript.Arguments>>"%TEMP%\LineCnt.vbs"
@echo WScript.Echo UBound(Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(objArgs(0),1).ReadAll,vbCrLf)) + 1 >>"%TEMP%\LineCnt.vbs"
:doit
for /f "Tokens=*" %%a in ('cscript //nologo "%TEMP%\LineCnt.vbs" %1') do (
set /a %2=%%a
)