Вы не используете команду SET
правильно, и вам нужно использовать отложенное расширение, чтобы правильно отображать переменную внутри блока кода, заключенного в скобки.
@ECHO off
SETLOCAL EnableDelayedExpansion
SET test=0
FOR /L %%i IN (1,1,5) DO (
FINDSTR /B %%i: Saves.txt >NUL && SET /a test+=1
ECHO !test!
)
IF %test% EQU 0 ECHO There are no saves. & GOTO :end
IF %test% GTR 0 ECHO There are saves.
:END
PAUSE
Более простой вариант будет.
FINDSTR /B "1: 2: 3: 4: 5:" Saves.txt >NUL 2>&1 && (ECHO There are saves.) || (ECHO There are no saves.)
Если все ваши строки начинаются с цифры и двоеточия, то вы можете просто сделать это.
FOR /F "tokens=1 delims=:" %%G IN (saves.txt) do set numsaves=%%G