简单的脚本,可能是一个简单的问题:
set /p customsettings="Some input prompt: "
if /i %customsettings:~0,1% equ Y echo Some output
^ - 这很好......
set custom=1
if %custom% equ 1 (
set /p customsettings="Some input prompt: "
echo Some output
)
^ -...这很好用 那么为什么这不能正常工作?:
set custom=1
if %custom% equ 1 (
set /p customsettings="Some input prompt: "
if /i %customsettings:~0,1% equ Y echo Some output
)
仅当set /p customsettings
行被夹在两个if语句之间时才会被跳过。
我很好奇为什么会这样,以及如何解决它。
注意:无论EnableDelayedExpansion
的设置如何,问题仍然存在。
答案 0 :(得分:2)
您可以在此网站上阅读很多有关延迟扩展的信息。整个IF / FOR构造(或parens中的多行)被加载并扩展为1行。所以你必须考虑LOAD-TIME行为和RUN-TIME行为。试试这个:
@echo off
setlocal enabledelayedexpansion
set custom=1
if %custom% equ 1 (
set /p customsettings="Some input prompt: "
if /i "!customsettings:~0,1!"=="Y" echo Some output
)