Signup/Sign In
Ask Question
Not satisfied by the Answer? Still looking for a better solution?

Windows cmd, how do I prompt for user input and use the result in another command?

I have a Windows .bat file which I would like to accept user input and then use the results of that input as part of the call to additional commands.

For example, I'd like to accept a process ID from the user, and then run jstack against that ID, putting the results of the jstack call into a file. However, when I try this, it doesn't work.

Here's my sample bat file contents:
@echo off
set /p id=Enter ID:
echo %id%
jstack > jstack.txt


and here's what shows up in jstack.txt:
Enter ID: Terminate batch job (Y/N)? 
by

3 Answers

akshay1995
Try this:

@echo off
set /p id="Enter ID: "

You can then use %id% as a parameter to another batch file like jstack %id%.

For example:

set /P id=Enter id:
jstack %id% > jstack.txt
sandhya6gczb
The syntax is as such:
set /p variable=[string]

Once you have set your variable, you can then go about using it in the following fashion.

@echo off
set /p UserInputPath=What Directory would you like?
cd C:\%UserInputPath%

note the %VariableName% syntax
kshitijrana14
I am not sure if this is the case for all versions of Windows, however on the XP machine I have, I need to use the following:
set /p Var1="Prompt String"

Without the prompt string in quotes, I get various results depending on the text.

Login / Signup to Answer the Question.