如果Windows批处理中的语法

时间:2014-05-24 20:18:30

标签: windows batch-file

我正在尝试在Windows批处理文件中完成这项工作:

if not exist "%~n1.ext" (
    set /P z="PROMPT (y,n)?"
            if /i "%z%" == "y" (
                echo if is working
            )
) 

但无论输入是什么,它都不会进入回声部分。语法有问题吗?

2 个答案:

答案 0 :(得分:2)

在块中使用变量时(()之间),您需要启用延迟扩展:

setlocal enabledelayedexpansion
set var=hello
if "a"=="a" (
  set var=world
  echo %var% !var!
)

答案 1 :(得分:1)

Stephan是正确的,在使用嵌套变量时需要使用enabledlayedexpansion。以下是使用该语法的代码(在使用此类变量时将%替换为!):

setlocal enabledelayedexpansion
if not exist "%~n1.ext" (
    set /P z="PROMPT (y,n)?"

    if /i "!z!" == "y" (
        echo if is working
    )
)