0

简单的脚本,可能是一个简单的问题:

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注意:无论' 的设置如何,问题仍然存在。

4

1 回答 1

2

您可以在此站点上阅读很多有关延迟扩展的信息。整个 IF/FOR 构造(或括号内的多行)被加载并扩展为 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
)
于 2013-08-08T01:37:57.053 回答