Проблема с пользовательским вводом в моем пакетном файле

вот часть кода, доставляющая мне проблемы:

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 никогда не достигается)?

Спасибо!


person Monster    schedule 27.05.2009    source источник


Ответы (1)


Попробуйте использовать отложенное расширение при тестировании 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 имеет значение.

person Patrick Cuff    schedule 27.05.2009