Batch file 如何在windows批处理文件中实现嵌套的do while循环?

Batch file 如何在windows批处理文件中实现嵌套的do while循环?,batch-file,Batch File,这是我的尝试,但它不断给出错误- set /a "x = 1" echo %x% :while1 if %x% leq 3 ( set /a "y = 1" :while2 if %y% leq 4 ( echo %y% set /a "y = y + 1" goto :while2 )

这是我的尝试,但它不断给出错误-

set /a "x = 1"
echo %x%
:while1
    if %x% leq 3 (
        set /a "y = 1"

        :while2
          if %y% leq 4 (
               echo %y% 
               set /a "y = y + 1"               
               goto :while2
          )
        echo %x%  
        set /a "x = x + 1"
        goto :while1
    )
错误- G:\A>设置/A“x=1” G:\A>echo 1 1.
该命令的语法不正确。

存在多个问题

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不是一个好主意

@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
)