На самом деле проблема в , а не в первой строке.
Проблема в том, что cmd
выполняет подстановку переменных сразу же после анализа оператора IF
, включая его тело. Поэтому строка:
IF %isDefault%==y (
проблематично, потому что isDefault
не устанавливается, когда внешний оператор IF
анализируется, поэтому он становится:
IF ==y (
и, следовательно, вы получаете сообщение о том, что (
неожиданно. Вы можете обойти это, включив расширение команды (SETLOCAL ENABLEDELAYEDEXPANSION
) для отложенное расширение переменной среды (подробности см. set /?
). Вы также можете переписать свой скрипт:
@ECHO OFF
IF NOT "%1"=="" GOTO :EOF
:LOOP1
SET /P isDefault=Value Missing, do you want to use default values [1,1,10,Local Area Connection 2]?[y/n]
IF "%isDefault%"=="y" (
SET from=1
SET step=1
SET to=10
SET lan="Local Area Connection 2"
GOTO :USERLOOP
)
IF "%isDefault%"=="n" GOTO :EOF
GOTO :LOOP1
(я сделал некоторые другие изменения, такие как использование встроенной метки :EOF
вместо :END
.)