我的批处理文件中的用户输入有问题

时间:2009-05-27 15:29:57

标签: batch-file user-input if-statement

这是代码中给我带来麻烦的部分:

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 个答案:

答案 0 :(得分: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%个变量。 parens之间的命令集被视为单个命令,因此当您进行测试时delBuild不存在。通过延迟扩展,在执行命令时会扩展变量,因此在测试时,delBuild具有值。