Пакетная команда больше не работает при разделении на символ & - PullRequest
0 голосов
/ 22 января 2020

Я написал пакетный скрипт, чтобы получить да или нет от пользователя. И это работает. Но когда я помещаю все в одну строку с & между командами, это больше не работает.

Вот рабочий скрипт:

@echo off
set /p Input=continue?
if "%Input%"=="n" exit
@echo continue
PAUSE

, а вот не рабочий скрипт:

@echo off & set /p Input=continue? & if "%Input%"=="n" exit & @echo continue & PAUSE

Этот также не работает.

Setlocal EnableDelayedExpansion & @echo off & set /p Input=continue? & if "!Input!"=="n" exit & @echo continue 

Ни этот:

@echo off & set /p Input=continue?
if "!Input!"=="n" exit & @echo continue 

У меня есть обновление: если я создаю новую строку, второй скрипт работает. Но это не то, чего можно ожидать.

@echo off & set /p Input=continue? & if "%Input%"=="n" exit
@echo continue & PAUSE

Ответы [ 2 ]

3 голосов
/ 22 января 2020

Когда вы настаиваете на том, чтобы сделать это в одну строку (я не вижу в этом необходимости - эй, это командный файл - оставьте его читаемым), используйте альтернативу:

@echo off & choice /m "Continue?" & if errorlevel 2 (exit) else (echo continue & pause)
1 голос
/ 22 января 2020

Ключ к запуску этой строки в одну строку состоит в том, чтобы полностью предотвратить отложенное расширение, используя более надежную команду choice:

@"%__AppDir__%choice.exe" /M "Continue"&(If ErrorLevel 2 Exit /B)&Pause

Очевидно, что остальная часть вашего кода будет продолжать работать на этом или следующая строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...