Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用批处理文件按键盘键_Batch File_Keyboard - Fatal编程技术网

Batch file 使用批处理文件按键盘键

Batch file 使用批处理文件按键盘键,batch-file,keyboard,Batch File,Keyboard,我试图开发一个批处理文件,它可以自动按左箭头和右箭头键n次,中间有一些停顿。谁能帮我一下吗 注:我试着安装自动键盘软件,但因为我在工作,所以无法安装。我需要这个程序在我的office PC上运行。我要澄清的是,您想从批处理文件启动一个程序,然后在启动的程序中按批处理文件按键(在您的示例中,是箭头键) 如果是这样的话,您将无法使用简单的“.bat”文件来执行此操作,因为启动的批处理文件将阻止批处理文件继续运行,直到其终止-- 我的第一个建议是在可能的情况下使用AutoHotkey或AutoIt之类

我试图开发一个批处理文件,它可以自动按左箭头和右箭头键n次,中间有一些停顿。谁能帮我一下吗


注:我试着安装自动键盘软件,但因为我在工作,所以无法安装。我需要这个程序在我的office PC上运行。

我要澄清的是,您想从批处理文件启动一个程序,然后在启动的程序中按批处理文件按键(在您的示例中,是箭头键)

如果是这样的话,您将无法使用简单的“.bat”文件来执行此操作,因为启动的批处理文件将阻止批处理文件继续运行,直到其终止--

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

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

如何做的细节超出了这个答案的范围,但是你可以使用我刚才通过搜索SO或Google描述的方法找到许多例子

编辑:为了帮助您入门,您可以查看以下内容:


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

    下面的批处理文件是一个示例,它启动另一个程序(本例中为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));
    

    有关此解决方案的进一步说明,请参阅:

    您的“office PC”运行的是哪种操作系统?您应该尝试自动操作系统-Windows 7@endro-无法在ofc PC中安装任何软件:(由于键盘是硬件,没有软件可以实际使硬件按键。最多您可以“插入”合成键事件)存储从硬件读取的事件的软件缓冲区,但不能保证任何软件都会接受。这太好了!非常感谢。我用它来准备Citrix 2013登录(启动和激活登录url的脚本行:
    @start iexplorehttps:///Citrix/StoreFrontWeb
    …这要求在使用批处理部分中的
    TITLE blablub
    WshShell.AppActivate(“blablub”);WScript.Sleep(100)“按下”按键时,控制台窗口必须对焦Jscript部分中的
    将稍微减少问题。您能告诉我
    set SendKeys=CScript//nologo//E:Jscript“%~F0”
    的用途吗?我正在关注@Kayracer的问题。
    LEFT ARROW    {LEFT}
    RIGHT ARROW   {RIGHT}