如果在Windows批处理语法

我试图使这个工作在一个Windowsbatch file

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

但不pipeinput是什么,它都不会进入回声部分。 语法中有什么错误?

当你在一个块(在()之间使用一个变量时,你需要启用延迟扩展:

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

斯蒂芬是正确的,你需要在使用嵌套变量时使用enabledlayedexpansion。 这里是你的语法代码(使用这种变量替换% ! ):

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