Существует несколько проблем.
1-% y% не работает должным образом, так как он раскрывается в момент разбора блока скобок перед его выполнением.
if %x% leq 3 (
set /a "y = 1"
if %y% leq 4 (
...
Расширяется до
if 1 leq 3 (
set /a "y = 1"
if leq 4 (
...
Вам лучше использовать отложенное расширение! Y!
2- Ваша синтаксическая ошибка является результатом "метки первой строки" непосредственно передзакрывающая скобка.Метки разрешены в скобках круглых скобок, но они всегда должны использоваться в двойных строках.
3 - переходы-готоки всегда отменяют все блоки скобок. Это не проблема в вашем случае, но в большинстве случаев это не так.Хорошая идея, использовать goto's в блоке
@echo off
setlocal enabledelayedexpansion
set /a "x = 1"
echo %x%
:while1
if %x% leq 3 (
set /a "y = 1"
:while2
:while2 This is the Second-Line-Label
if !y! leq 4 (
echo y=!y!
set /a "y = y + 1"
goto :while2
)
echo x=!x!
set /a "x = x + 1"
goto :while1
)