批处理文件中用户输入出现问题

3
这是导致我困扰的代码部分:
IF EXIST TH_BUILD_* (
ECHO A current build of Test Harness exists.
set /p delBuild=Delete preexisting build [y/n]?: 
if "%delBuild%"=="y" (GOTO deleteandcontinue) else ( EXIT)
)

出于某种原因,无论输入是什么,批处理文件都会退出。为什么会这样(deleteandcontinue 没有被执行)?
谢谢!
1个回答

3

在测试 delBuild 时,尝试使用延迟扩展:

setlocal enableextensions enabledelayedexpansion

IF EXIST TH_BUILD_* (
    ECHO A current build of Test Harness exists.
    set /p delBuild=Delete preexisting build [y/n]?: 
    if "!delBuild!"=="y" (
        GOTO deleteandcontinue
    ) else (
        exit
    )
)

:deleteandcontinue
@echo At deleteandcontinue

%var% 变量在命令读取时会被展开。括号内的一组命令被视为单个命令,因此在测试时不存在 delBuild。使用延迟展开,变量在执行命令时被展开,因此在测试时,delBuild 具有一个值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接