批处理文件中的变量未增加

时间:2018-06-29 20:09:16

标签: batch-file for-loop

因此,我正在尝试创建一个文件,该文件将读取一个名为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 :(得分:1)

您未正确使用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