Usar uma instrução if em lote geralmente segue este formato:
if %state%==1 (
goto start
) ELSE (
goto query
)
Não há razão para o intérprete do cmd associar o ELSE ao IF.
Além disso, comentários em lote em sua própria linha, com um REM
ou% de::
especialmente interpretada (algum tipo de rótulo de linha nulo ou algo assim, se bem me lembro).
REM this is a valid comment
:: this too, but be careful using these inside blocks of any kind... so stick to REM