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

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)
)


由于某种原因,无论输入如何,批处理文件都会退出。为什么会发生这种情况(从未达到删除和继续)?

谢谢!

最佳答案

在测试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具有值。

10-07 15:03