Переменные не увеличиваются в пределах пакетного файла - PullRequest
0 голосов
/ 29 июня 2018

Итак, я пытаюсь создать файл, который будет читать текстовый файл с именем saves. В сохранениях я хочу проверить до 5 раз для 1 :, 2 :, 3:, 4: и 5 :. Проблема в том, что когда я запускаю этот цикл for, чтобы проверить файл 5 раз, он всегда выдает одно и то же, и независимо от того, что скажет, что нет сохранений. Любая помощь или совет высоко ценится.

@ECHO off
SETLOCAL EnableDelayedExpansion
SET test=0
FOR /L %%i IN (1,1,5) DO (
FINDSTR %%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

1 Ответ

0 голосов
/ 29 июня 2018

Вы не используете команду 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...