I'm doing an assignment. Trying to get my batch file to read individual lines of an input file and figure out how many dots and commas it has. However, no matter what I do, the loop only runs once, so only the first line of the file is correctly processed, even though there are multiple lines. What am I missing?
REM @echo off
setlocal enabledelayedexpansion
set count=-2
for /F "delims=" %%I in (laba2.txt) DO (
set initial=%%I
set b = !initial!
:againdot
set oldb=!b!
set "b=!b:*.=!"
set /a count+=1
echo "b = !b!, oldb = !oldb!"
if not !oldb! == !b! goto :againdot
set b=!initial!
:againcomma
set oldb=!b!
set "b=!b:*,=!"
set /a count+=1
echo "b = !b!, oldb = !oldb!"
if not !oldb! == !b! goto :againcomma
)
echo %count%
I have, of course, read other similar questions, but I can't figure out how, if at all, those apply to my problem, so sorry if this is a duplicate.
Oh, and if you have a better way to count individual characters, I'd be happy to hear it, but that's besides the point.
EDIT: here's CMD feed
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>test.bat
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>REM @echo off
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>setlocal enabledelayedexpansion
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set count=-2
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>for /F "delims=" %I in (laba2.txt) DO (
set initial=%I
set b = !initial!
set oldb=!b!
set "b=!b:*.=!"
set /a count+=1
echo "b = !b!, oldb = !oldb!"
if not !oldb! == !b! goto :againdot
set b=!initial!
set oldb=!b!
set "b=!b:*,=!"
set /a count+=1
echo "b = !b!, oldb = !oldb!"
if not !oldb! == !b! goto :againcomma
)
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>(
set initial=this,is .a random
set b = !initial!
set oldb=!b!
set "b=!b:*.=!"
set /a count+=1
echo "b = !b!, oldb = !oldb!"
if not !oldb! == !b! goto :againdot
set b=!initial!
set oldb=!b!
set "b=!b:*,=!"
set /a count+=1
echo "b = !b!, oldb = !oldb!"
if not !oldb! == !b! goto :againcomma
)
"b = *.=, oldb = "
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set oldb=!b!
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set "b=!b:*.=!"
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set /a count+=1
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>echo "b = !b!, oldb = !oldb!"
"b = =, oldb = *.="
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>if not !oldb! == !b! goto :againdot
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set oldb=!b!
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set "b=!b:*.=!"
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set /a count+=1
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>echo "b = !b!, oldb = !oldb!"
"b = =, oldb = ="
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>if not !oldb! == !b! goto :againdot
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set b=!initial!
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set oldb=!b!
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set "b=!b:*,=!"
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set /a count+=1
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>echo "b = !b!, oldb = !oldb!"
"b = is .a random, oldb = this,is .a random"
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>if not !oldb! == !b! goto :againcomma
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set oldb=!b!
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set "b=!b:*,=!"
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>set /a count+=1
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>echo "b = !b!, oldb = !oldb!"
"b = is .a random, oldb = is .a random"
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>if not !oldb! == !b! goto :againcomma
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>echo 3
3
C:\Users\fiksi\Desktop\Учёбка\ОС 3с\Лаба 2>
And here's the file I'm trying to read:
this,is .a random
..,arran,gement of.
commas and,
dots