I want to prompt the user for some input detail, and then use it later as a command line argument.
You can use set
with the /p
argument:
SET /P variable=[promptString]
The /P switch allows you to set the value of a variable to a line of input entered by the user. Displays the specified promptString before reading the line of input. The promptString can be empty.
So, simply use something like
set /p Input=Enter some text:
Later you can use that variable as argument to a command:
myCommand %Input%
Be careful though, that if your input might contain spaces it's probably a good idea to quote it:
myCommand "%Input%"
cmd
parser. call set Input=%Input%
would be a way. This would be parsed twice (due to the call
), expanding %Input%
the first time and whatever environment variables you have in there the second time. But this doesn't really have anything to do with this question or answer. –
Scape A rather roundabout way, just for completeness:
for /f "delims=" %i in ('type CON') do set inp=%i
Of course that requires ^Z as a terminator, and so the Johannes answer is better in all practical ways.
Thanks! I just wanted this to keep my bat file from Closing:
set /p anykey=Press any key to continue
Works pretty good. Only problem is that you have to press any key + enter. You can't just hit Enter and enter a blank string.
Set /p
is totally happy with an empty input (just ENTER without any key before). The pause
command on the other hand does just the opposite: waiting for any key without needing ENTER) –
Rebellion © 2022 - 2025 — McMap. All rights reserved.