因此,我正在尝试创建一个文件,该文件将读取一个名为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
答案 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