使用批处理文件按键盘键

时间:2013-06-11 07:03:27

标签: batch-file keyboard

我正在尝试开发一个批处理文件,它可以自动按下左箭头和右箭头键n次,中间有一些暂停。有人可以帮帮我吗?

P.S:我尝试安装自动键盘软件,但是因为我上班,我无法安装它们。我需要这个程序才能在办公室电脑上工作。

2 个答案:

答案 0 :(得分:45)

哇!这意味着您必须学习不同的编程语言才能将两个键发送到键盘?有更简单的方法可以实现同样的目的。的: - )

下面的批处理文件是启动另一个程序(在本例中为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 to WebSphere MQ server not closing at EOF, hangs

答案 1 :(得分:5)

为了清楚起见,您想要从批处理文件中启动程序,然后在该启动的程序中按批处理文件按键(在您的示例中为箭头键)?

如果是这种情况,你只能用一个“.bat”文件就可以做到这一点,因为启动会停止批处理文件继续直到它终止 -

我的第一个建议是尽可能使用AutoHotkey或AutoIt之类的东西,因为它们都有活跃的论坛,你会发现无数个人启动应用程序和发送按键的例子,更不用说简单地“记录”什么工具了你想做什么。但是你说这是一台工作计算机,你可能无法加载第三方程序..但你并非没有选择。

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

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

编辑:只是为了帮助您入门,您可以在这里查看:

  1. Automate tasks with Windows Script Host's SendKeys method
  2. A useful thread about SendKeys