Проблема с пользовательским вводом в моем командном файле - PullRequest
3 голосов
/ 27 мая 2009

вот часть кода, которая доставляет мне неприятности:

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

По какой-то причине, независимо от ввода, пакетный файл завершается. Почему это происходит (удаление и продолжение никогда не достигается)?

Спасибо!

1 Ответ

3 голосов
/ 27 мая 2009

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

...