我有一个Windows .bat文件,我想接受用户输入,然后使用输入的结果作为额外命令调用的一部分。

例如,我想从用户那里接受一个进程ID,然后针对这个ID运行jstack,将jstack调用的结果放到一个文件中。然而,当我尝试这样做时,它不起作用。

以下是我的示例bat文件内容:

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

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

Enter ID: Terminate batch job (Y/N)? 

当前回答

我有一个小cmd我使用时,准备pc客户端:它调用用户输入,并重命名pc。

@ECHO "remember to run this as admin."
@ECHO OFF
SET /P _inputname= Please enter an computername:
@ECHO Du intastede "%_inputname%"
@ECHO "The pc will restart after this"
pause
@ECHO OFF
wmic computersystem where name="%COMPUTERNAME%" call rename name="%_inputname%"

shutdown -r -f

其他回答

刚刚添加了

set /p NetworkLocation= Enter name for network?

echo %NetworkLocation% >> netlist.txt

序列到我的netsh批处理作业。它现在显示我响应的位置作为样本点。我连续>>输出文件,所以我现在知道“家”,“工作”,“星巴克”等。寻找干净的空气,我可以屋檐最低使用频道,是否有5或只是所有2.4兆赫的wlan周围。

你也可以尝试使用userInput.bat,它使用html输入元素。

这将把输入赋值为jstackId:

call userInput.bat jstackId
echo %jstackId%

这只会打印输入值,最终你可以用FOR /F捕获:

call userInput.bat

另一种方式可能会很有趣。你可以调用一个powershell脚本,在那里你可以做任何事情,并发送数据巴赫到cmd或做其他类似的事情。

set var=myvar; 
call "c:\input2.cmd" %var%. 

它更灵活(你可以用powershell同样的方式发送数据)。

所以在你的cmd中,考虑到ps脚本是在C::中编写的

PowerShell.exe -ExecutionPolicy unrestricted -Command "& {. C:\Input.ps1}"

在你的输入中。Ps1脚本,这样写:

$var = Read-Host -Prompt "Your input"
Write-Host "Your var:",$var
#Do stuff with your variable
@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