在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)。