( was unexpected at this time - batch script
Solution 1
Actually, the problem is not on the first line.
The problem is that cmd does variable substitution immediately when it parses the IF statement, including its body. Therefore the line:
IF %isDefault%==y (
is problematic because isDefault isn't set when the outer IF statement is parsed, so it becomes:
IF ==y (
and hence you get the error about ( being unexpected. You can get around this by enabling the command extension (SETLOCAL ENABLEDELAYEDEXPANSION) for delayed environment variable expansion (see set /? for details). You also can rewrite your script:
@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
(I made some other changes, such as using the built-in :EOF label instead of :END.)
Solution 2
As jamesdlin said, it's a problem with empty variables and also with delayedExpansion.
Then the solution is simple by replacing %isDefault% with !isDefault!, this works even if isDefault is empty.
setlocal EnableDelayedExpansion
IF [%1]==[] (
: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 :END
GOTO :LOOP1
)
Solution 3
I had a very similar problem and code construct that was causing me a lot of pain to resolve. My error message was ". was unexpected at this time"...
It took me a couple long days to figure out another similar consideration due to this problem... Please take a look a the following problem and subsequent solution here: ". was unexpected at this time" generated from batch script line 'if exist [file] (...
The solution was simply the treatment of '(' and ')' on ECHO lines inside an IF statement block.
The point is, do consider treatment of special characters as a possible source of a problem when troubleshooting IF (and possibly FOR) statements.
HTH someone...
choppy
Updated on July 05, 2022Comments
-
choppy 6 monthsI'm using the batch script below and get an error
( was unexpected at this time.
I know that the problem is in the first line but I don't understand what is wrong. Any ideas ?
script:
IF [%1]==[] ( :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 :END GOTO :LOOP1 )