如何在Windows命令提示符下模拟用户输入

时间:2015-11-05 21:37:30

标签: batch-file command-line cmd command-prompt

我需要在windows 7+中使用cmd(命令提示符)模拟某些句子中的用户输入,我在这里搜索并找到了一个很好的部分解决方案:

[部分解决方案] how to userinput without typing to a batch file

它适用于大多数情况,但由于某种原因,在其他情况下失败。它运作良好,例如:

cmd /c echo y^> "%temp%\answer.tmp" ^& (chkdsk C: /F /R /X ^< "%temp%\answer.tmp") ^& del "%temp%\answer.tmp"

它创建一个名为“answer.tmp”的文件,其中包含两行,一行带有响应(在本例中为“y”),然后将其变为“chkdsk C:/ F / R / X”命令,最后删除它

但是,出于某种原因,它失败了:

cmd /c echo y^> "%temp%\answer.tmp" ^& (dism /online /disable-feature /featurename:"TabletPCOC" ^< "%temp%\answer.tmp") ^& del "%temp%\answer.tmp"

唯一改变的是执行的命令,这次是“dism / online / disable-feature / featurename:'TabletPCOC'”。

你有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这是一个小型(不是真的......)PowerShell程序,可以做你想要的:

add-type -AssemblyName microsoft.VisualBasic

add-type -AssemblyName System.Windows.Forms

start cmd.exe 

start-sleep -Milliseconds 500

[Microsoft.VisualBasic.Interaction]::AppActivate("cmd.exe")

[System.Windows.Forms.SendKeys]::SendWait("bluh")

请注意,start Notepad.exe是可选的,但如果它未打开,则不起作用。 start-sleep命令会给出一个小计时器,这很有用,因为它可以让计算机有机会加载Notepad.exe。

所以在cmd中运行它:

powershell.exe add-type -AssemblyName microsoft.VisualBasic;add-type -AssemblyName System.Windows.Forms;start Notepad.exe;start-sleep -Milliseconds 500;[Microsoft.VisualBasic.Interaction]::AppActivate("Notepad");[System.Windows.Forms.SendKeys]::SendWait("bluh")

答案 1 :(得分:0)

谢谢@ RookieTEC9(我暂时无法评论您的回复)但只有在只有一个cmd.exe实例正在运行时它才有效...

感谢@ mklement0,当我直接执行它时,它正确地将“y”响应添加到文件中,但命令仍然停留在用户响应提示符处。