我正在尝试开发一个批处理文件,它可以自动按下左箭头和右箭头键n次,中间有一些暂停。有人可以帮帮我吗?
P.S:我尝试安装自动键盘软件,但是因为我上班,我无法安装它们。我需要这个程序才能在办公室电脑上工作。答案 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上搜索我刚才描述的方法找到大量的例子。
编辑:只是为了帮助您入门,您可以在这里查看: