使用批处理文件按键盘上的键

我试图开发一个批处理文件,可以自动按左箭头和右箭头键n次,间隔一段时间。 有人可以帮我吗?

PS:我尝试安装自动键盘软件,但是自从我工作以来,我无法安装它们。 我需要这个程序在我的办公室PC上工作。

哇! 这意味着你必须学习一种不同的编程语言来发送两个键到键盘? 有更简单的方法来达到同样的目的。 🙂

下面的批处理文件是启动另一个程序(本例中为cmd.exe)的示例,向其发送一个命令,然后发送一个向上箭头键,这会导致恢复上次执行的命令。 批处理文件很简单,没有问题就可以理解,所以你可以修改它以适应你的需求。

@if (@CodeSection == @Batch) @then @echo off rem Use %SendKeys% to send keys to the keyboard buffer set SendKeys=CScript //nologo //E:JScript "%~F0" rem Start the other program in the same Window start "" /B cmd %SendKeys% "echo off{ENTER}" set /P "=Wait and send a command: " < NUL ping -n 5 -w 1 127.0.0.1 > NUL %SendKeys% "echo Hello, world!{ENTER}" set /P "=Wait and send an Up Arrow key: [" < NUL ping -n 5 -w 1 127.0.0.1 > NUL %SendKeys% "{UP}" set /P "=] Wait and send an Enter key:" < NUL ping -n 5 -w 1 127.0.0.1 > NUL %SendKeys% "{ENTER}" %SendKeys% "exit{ENTER}" goto :EOF @end // JScript section var WshShell = WScript.CreateObject("WScript.Shell"); WshShell.SendKeys(WScript.Arguments(0)); 

有关SendKeys的键名称的列表,请参阅: http : //msdn.microsoft.com/en-us/library/8c6yea83( v=vs.84) .aspx

例如:

 LEFT ARROW {LEFT} RIGHT ARROW {RIGHT} 

有关此解决方案的进一步说明,请参阅: GnuWin32 openssl s_client conn到WebSphere MQ服务器不在EOF处关闭,挂起

只是要清楚,你想从一个批处理文件启动一个程序,然后在该启动的程序中按批按键(在你的例子中,箭头键)?

如果是这种情况,那么只用“.bat”文件就无法做到这一点,因为启动的文件会停止批处理文件的继续,直到文件终止 –

我的第一个建议是使用像AutoHotkey或AutoIt,如果可能的话,只是因为他们都有活跃的论坛,你会发现无数的人启动应用程序的例子,并发送按键不提工具简单地“记录”你想要的做。 然而,你说这是一台工作电脑,你可能无法加载第三方程序..但你不是没有选择。

您可以使用类似.vbs文件的Windows Scripting Host来启动程序并将密钥发送到该进程。 如果您运行的是包含PowerShell 2.0(Windows XP Service Pack 3,Windows Vista Service Pack 1,Windows 7等)的Windows版本,则可以使用Windows脚本宿主作为PS脚本中的COM对象,或者使用VB的Intereact类。

如何做到这一点的具体细节超出了这个答案的范围,但你可以找到大量的例子,使用我刚刚在SO或Google上搜索的方法。

编辑:只是为了帮助你开始你可以看看这里:

  1. 使用Windows Script Host的SendKeys方法自动执行任务
  2. 一个关于SendKeys的有用的线程