在Windows cmd中,如何提示用户input并在另一个命令中使用结果?

我有一个Windows .bat文件,我想接​​受用户input,然后使用该input的结果作为对其他命令的调用的一部分。

例如,我想接受来自用户的进程ID,然后针对该ID运行jstack,并将jstack调用的结果放入一个文件中。 但是,当我尝试这个,它不起作用。

这里是我的示例bat文件的内容:

@echo off set /p id=Enter ID: echo %id% jstack > jstack.txt 

以下是jstack.txt中显示的内容:

inputID:终止批处理作业(是/否)? 

尝试这个:

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

然后可以使用%id%作为另一个batch file的参数。 例如:

 jstack %id% 

编辑:这对我来说工作得很好。 对不起,我不能帮助更多。

 set /P id=Enter id: jstack %id% > jstack.txt 

语法如下: set /p variable= [string]

请注意等号( = )后面的空格

查看http://commandwindows.com/batch.htm或http://www.robvanderwoude.com/userinput.php ,深入了解使用不同版本的Windows操作系统batch file的用户input。

一旦你设置了你的variables,你就可以用下面的方式来使用它。

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

注意%VariableName%语法

我不知道是否这是所有版本的Windows的情况下,但是在XP机器上,我需要使用以下内容:

 set /p Var1="Prompt String" 

没有引号中的提示string,我根据文本得到各种结果。

 @echo off set /p input="Write something, it will be used in the command "echo"" echo %input% pause 

如果我得到你想要的,这工作正常。 你也可以在其他命令中使用%input%。

 @echo off echo Write something, it will be used in the command "echo" set /p input="" cls echo %input% pause 
 @echo off :start set /p var1="Enter first number: " pause 

对于SET,没有logging的/提示参数。

如果您需要提示环境variables能够在重新启动后继续运行,则可以使用SETX来存储它。

只有在重新启动命令提示符后,由SETX创build的variables才能使用。 然而,整齐地说,你可以SETX一个已经被SET设置的variables,即使它具有相同的名字。

这适用于Windows 8.1 Pro中的我:

 set /p UserInfo= "What is your name? " setx UserInfo "%UserInfo%" 

(现有variables周围的引号是必需的。)

此过程允许您在当前会话期间使用临时SET创build的variables,并允许您在重新启动计算机或重新启动CMD提示时重新使用SETX创build的variables。

(编辑适当格式的代码段落。)

variables周围的美元符号不适用于我的Vista机器,但百分比符号。 还要注意在提示和用户input之间会出现“set”行的尾部空格。

 set /p choice= "Please Select one of the above options :" 

echo'%choice%'在'='之后的空间非常重要

刚刚添加了

 set /p NetworkLocation= Enter name for network? echo %NetworkLocation% >> netlist.txt 

序列到我的netsh批处理作业。 现在,它显示我作为该样本点的回应的位置。 我继续>>输出文件,所以我现在知道“家”,“工作”,“星巴克”等。寻找清晰的空气,我可以避开最低使用频道以及周围是否有5个或全部2.4 MHz WLAN。

只是保持variables的默认值。 按Enter键使用最近运行的.bat的默认值:

 @echo off set /p Var1=<Var1.txt set /p Var1="Enter new value ("%Var1%") " echo %Var1%> Var1.txt rem YourApp %Var1% 

在第一次运行中,只需忽略有关variables初始值不足的消息(或手动创buildVar1.txt)。