Однострочная команда для ввода и печати ввода пользователя - PullRequest
0 голосов
/ 01 февраля 2020

Я хочу повторить пользовательский ввод в одной строке. Многострочный:

set /P name="What Is Your Name?"
echo %name%

Ниже не работает.

set /P name="What Is Your Name?" & echo %name% 

1 Ответ

2 голосов
/ 01 февраля 2020

Вам нужен еще один уровень расширения, так как парсер читает строку до того, как %name% было определено со значением. Поэтому вам нужно отложить расширение, используя один из нескольких методов.

Этот ab использует команду Call:

@Set /P "name=What is your Name? " && (Call Echo Welcome %%name%%) & Pause

И это использует отложенное расширение более правильно:

@Set /P "name=What is your Name? " && (SetLocal EnableDelayedExpansion & Echo Welcome !name! & EndLocal) & Pause

Этот использует другой экземпляр cmd.exe с его опцией отложенного расширения:

@Set /P "name=What is your Name? " && (Cmd /V /C Echo Welcome !name!) & Pause

И это использует For l oop для аналогичной работы :

@Set /P "name=What is your name? " && (For /F "Tokens=1* Delims==" %%G In ('Set name 2^>NUL') Do @Echo Welcome %%H) & Pause
...