怎么用批处理代替键盘按键

作者&投稿:丛古 (若有异议请与网页底部的电邮联系)
怎样使用BAT脚本实现自动按键盘的某个键~

批处理是不行的 用VBS 很简单 例子如下
Set objShell = CreateObject("Wscript.Shell")
do
WScript.Sleep 3000
objShell.SendKeys "{F5}"
WScript.Sleep 3000
objShell.SendKeys "{F5}"
loop




使用 SendKeys 方法可以将键击发送到无自动化界面的应用程序中。多数键盘字符都可用一个键击表示。某些键盘字符由多个键击组合而成(例如,CTRL+SHIFT+HOME)。要发送单个键盘字符,请将字符本身作为 string 参数发送。例如,要发送字母 x,则请发送 string 参数 "x"。

可使用 SendKeys 同时发送多个键击。为此,可将每个键击按顺序排列在一起,以此来创建表示一系列键击的复合字符串参数。例如,要发送键击 a、b 和 c,则需要发送字符串参数 "abc" 。SendKeys 方法将某些字符用作字符的修饰符(而不使用其本身的含义)。这组特殊的字符可包括圆括号、中括号、大括号,以及:

加号 "+"
插入记号 "^"
百分号 "%"
和“非”符号 "~"

用大括号 "{}" 括起这些字符可以发送它们。例如,要发送加号,请使用字符串参数 "{+}"。SendKeys中使用的中括号 "[ ]" 无任何特殊含义,但是必须把它们括在大括号中,以便容纳确实要赋予其特殊含义的应用程序(例如,对于动态数据交换 (DDE) 就是这样)。

要发送左中括号字符,请发送字符串参数 "{[}";要发送右中括号字符,请发送字符串参数 "{]}"。
要发送左大括号字符,请发送字符串参数 "{{}";要发送右大括号字符,请发送字符串参数 "{}}"。

某些键击不生成字符(如 ENTER 和 TAB)。某些键击表示操作(如 BACKSPACE 和 BREAK)。要发送这些类型的键击,请发送下表中列出的参数:

空格键 " "
退格键 {BACKSPACE} 或 {BS} 或 {BKSP}
BREAK {BREAK}
DELETE {DELETE} 或 {DEL}
向下键 {DOWN}
向上键 {UP}
向左键 {LEFT}
向右键 {RIGHT}
END {END}
ENTER {ENTER} 或 ~
ESC {ESC}
TAB {TAB}
CAPS LOCK {CAPSLOCK}
HELP {HELP}
HOME {HOME}
INSERT {INSERT} 或 {INS}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
SCROLL LOCK {SCROLLLOCK}

F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}

要发送由常规键击和 SHIFT、CTRL 或 ALT 组合而成的键盘字符,请创建表示该键击组合的复合字符串参数。可通过在常规键击之前添加一个或多个以下特殊字符来完成上述操作:

SHIFT +
CTRL ^
ALT %

注意:这样使用时,不用大括号括起这些特殊字符。
要指定在按下多个其他键时,按下 SHIFT、CTRL 和 ALT 的组合,请创建复合字符串参数,用括号括起其中的组合键。例如,要发送的组合键指定:

如果在按 e 和 c 的同时按 SHIFT 键,则发送字符串参数 "+(ec)"。
如果在按 e 时只按 c(而不按 SHIFT),则发送字符串参数 "+ec"。
可使用 SendKeys 方法发送一种在一行内重复按键的键击。为此,要创建复合字符串参数,以指定要重复的键击,并在其后指定重复次数。可使用 {键击 数字} 形式的复合字符串参数来完成上述操作。例如,如果要发送 10 次 "x",则需要发送字符串参数 "{x 10}"。请确保在键击和数字之间有一个空格。

注意:只可以发送重复按一个键的键击。例如,可以发送 10 次 "x",但不可发送 10 次 "Ctrl+x"。
注意:不能向应用程序发送 PRINT SCREEN 键 {PRTSC}。


例子1:关机脚本 (模拟按键为:Ctrl + Esc、u、u )

把以下代码复制至记事本,另存为 off.vbs

set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "^{ESC}uu"


例子2:重启脚本 (模拟按键为:Ctrl + Esc、u、r )

把以下代码复制至记事本,另存为 reboot.vbs

set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "^{ESC}ur"


例子3:切换输入法 (模拟同时按下:Shift Ctrl )

set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "+(^)"


例子4:输入 cn-dos.net! 至记事本并保存为 CnDos.txt

Dim WshShell
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad"
WScript.Sleep 1500
WshShell.AppActivate "无标题 - 记事本"
WshShell.SendKeys "c"
WScript.Sleep 200
WshShell.SendKeys "n"
WScript.Sleep 200
WshShell.SendKeys "-"
WScript.Sleep 200
WshShell.SendKeys "d"
WScript.Sleep 200
WshShell.SendKeys "o"
WScript.Sleep 200
WshShell.SendKeys "s"
WScript.Sleep 200
WshShell.SendKeys "."
WScript.Sleep 200
WshShell.SendKeys "n"
WScript.Sleep 200
WshShell.SendKeys "e"
WScript.Sleep 200
WshShell.SendKeys "t"
WScript.Sleep 200
WshShell.SendKeys "!"
WScript.Sleep 200
WshShell.SendKeys "%FS"
WScript.Sleep 500
WshShell.SendKeys "C"
WScript.Sleep 200
WshShell.SendKeys "n"
WScript.Sleep 200
WshShell.SendKeys "D"
WScript.Sleep 200
WshShell.SendKeys "o"
WScript.Sleep 200
WshShell.SendKeys "s"
WScript.Sleep 200
WshShell.SendKeys "%S"
WScript.Sleep 500
WshShell.SendKeys "%FX"


例子5:自动定时存盘的记事本(此脚本来自网上)

'第一部分:定义变量和对象
Dim WshShell, AutoSaveTime, TXTFileName
AutoSaveTime=(1000*60*1) '自动存盘时间为1分钟
Set WshShell=WScript.CreateObject("WScript.Shell")
TXTFileName=InputBox("给文本起名(不能用中文和纯数字):")

'第二部分:打开并激活记事本
WshShell.Run "notepad"
WScript.Sleep 200
WshShell.AppActivate "无标题 - 记事本"

'第三部分:用输入的文件名存盘
WshShell.SendKeys "^s"
WScript.Sleep 300
WshShell.SendKeys TXTFileName
WScript.Sleep 300
WshShell.SendKeys "%s"
WScript.Sleep AutoSaveTime

'第四部分:自动定时存盘
While WshShell.AppActivate (TXTFileName)=True
WshShell.SendKeys "^s"
WScript.Sleep AutoSaveTime
Wend
WScript.Quit


例子:

set objShell = CreateObject("Wscript.Shell")
strCommandLine = "psetup755281.exe" '启动安装程序
objShell.Run(strCommandLine)
set WshShell = CreateObject("WScript.Shell")
WScript.Sleep 2000 '延时3秒
WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步
WScript.Sleep 300 '延时3秒
WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步
WScript.Sleep 300 '延时3秒
WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步
WScript.Sleep 5200 '延时3秒
WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步
WScript.Sleep 300 '延时3秒
WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步
WScript.Sleep 300 '延时3秒
WshShell.SendKeys "{ENTER}" '模拟按下回车键执行下一步
WScript.Sleep 200
WshShell.SendKeys " " '模拟按下空格键去除安装百度超级搜霸一行前的√号
WScript.Sleep 100
WshShell.SendKeys "{TAB}" '模拟按下 Tab 键选择安装项目
WScript.Sleep 200
WshShell.SendKeys " " '模拟按下空格键去除安装百度超级搜霸一行前的√号
WScript.Sleep 200 '延时0.3秒
WshShell.SendKeys "f" '模拟按下 F键同意协议

@echo off
>t.vbs echo set ws=createObject("WScript.Shell") '定义一个ws对象
>>t.vbs echo ws.SendKeys "+{tab}" '发送Shift+Tab 按键
>>t.vbs echo wscript.sleep 1000 '休眠1000毫秒(就是程序等待1秒在执行后的命令)
>>t.vbs echo ws.SendKeys "^{enter}" '发送Ctrl+Enter 按键
t.vbs
del t.vbs

发送数值和字母模拟按键就直接输入之母和数值就行了 比如你要发送 ab12
就是这ws.SendKeys "ab12"


发送模拟按键时候
SHIFT 用 +
CTRL 用 ^
ALT 用 %
其他模拟按键
键 参数
退格键 {BACKSPACE}、{BS} 或 {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL 或 DELETE {DELETE} 或 {DEL}
向下键 {DOWN}
END {END}
ENTER {ENTER} 或 ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS 或 INSERT {INSERT} 或 {INS}
向左键 {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
向右键 {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
向上键 {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}

调用两个程序,在每个程序运行后按一遍键盘上的alt+s,再按s 请教,是否可以用批处理命令实现改功能。 大概例如: @echo off start /w 1.exe(调用1) alt+s(执行按键


模拟键盘输入 bat 批处理
批处理没的键盘模拟 VBS才有 把下面的保存为aa.vbs 运行就可以了Set WshShell = WScript.CreateObject("WScript.Shell")WshShell.Run "explorer.exe http:\/\/www.baidu.com",1 WScript.Sleep 1000WshShell.SendKeys "{TAB}"WScript.Sleep 500WshShell.SendKeys "122242"WScript.Sleep 500WshShell....

如何使用批处理文件接收键盘输入,并且写入文本文档中?
接受键盘输入的字符串,输出到文本a.txt中@echo off set str= set \/p str=请输入:if not defined str (echo 未输入任意内容,按任意键退出&pause>nul&exit)echo>a.txt %str start a.txt

谁帮我写一个exe,卡住键盘上的某个键
批处理是不行的 用VBS 很简单 例子如下Set objShell = CreateObject("Wscript.Shell") doWScript.Sleep 3000objShell.SendKeys "{F5}" WScript.Sleep 3000objShell.SendKeys "{F5}" loop 使用SendKeys 方法可以将键击发送到无自动化界面的应用程序中。多数键盘字符都可用一个键击表示。某些键盘字符由多个键击...

怎么用vbs模拟键盘的回车?
WshShell.SendKeys "{ENTER}"模拟键盘操作,将一个或多个按键指令发送到指定Windows窗口来控制应用程序运行。其使用格式为:object.SendKeys(string);object:表示WshShell对象;string:表示要发送的按键指令字符串,需要放在英文双引号中。

bat 批处理中set \/p 中\/p 参数有什么作用
举个例子说。set \/p A=B A是变量名这个就不用说了,这时,B会显示在屏幕上,整个bat会暂停并等待用户输入数据,你用键盘输入的东西同时会出现在B后面,输入完成按enter后,你输入的数据就是变量值了,在以后的操作中,如果要用到你刚才输入的数据,就用%A%代替就行了。所以B最好是一些提示性的...

1.批处理中,我的程序进行到某一步需要回车换行才能继续执行下去,但是...
第一个,好像只能调用vbs,使用VBS不能动鼠标和键盘,而且必须保持CMD窗口在最前端,VBS模拟的按键才有效!不过你试一下这个命令是否有效!在你那步需要回车的命令前添加上如下命令,是否有效,请自测!echo.|你的命令 第二个命令其实跟上面那个差不多,如下:echo 要输入的字符|你的命令 ...

急急!!! 如何使用批处理文件接收键盘输入,并且写入文本文档中?_百度...
在CMD下用COPY命令写格试 copy con c:\\1.txt这个命令就是拷贝从键盘输入的字符写入C盘下的1.txt文件内,输入命令回车后就可以开始输入要写入TXT文件的命令了,写完后按键盘的ctrl+z键结束.比如 C:\\>copy con c:\\1.txt 这些内容就是保存在1.txt里了 ^Z这样就结束了,^Z就是按住CTRL键不放在...

批处理中 如何判断键盘‘是否’有输入?
批处理代码如下 echo offset \/p a=请输入:if "%a%"=="" (goto 1) else (goto 2):1echo 你没有输入!pauseexit:2echo 你输入了%a%pauseexit程序运行正常 请采纳

批处理、命令行、DOS有什么联系?
dos是过去计算机还不普及时,广泛使用的一种操作系统。它的界面全是命令键盘操作。命令行这个概念多点,windows里的cmd命令(也就是批处理)可以称为一种命令行操作,linux中的shell也可以称为命令行。批处理是windows下的命令操作方式,功能远远不如linux下的shell强大,但在使用windows系统的服务器中,批...

怎么调出电脑软键盘
1、打开“设置”-“个性化”-“任务栏”,找到“打开或关闭系统图标”并打开 2、找到“触摸键盘”将其打开 3、可以看到任务栏出现“触摸键盘”图标 4、点击即可打开触摸键盘\/软键盘

叶城县15884146127: 如何用批处理模拟键盘按键 -
向仁依托: 批处理的话代码如下: ::═════代═══码═══开═══始═════ @echo off mshta "vbscript:CreateObject("Shell.Application").ToggleDesktop&window.close" ::═════代═══码═══结═══束═════其实批处理还是调用了vbs,直接使用vbs更方便,没有黑框,vbs代码如下: '═════代═══码═══开═══始═════CreateObject("Shell.Application").ToggleDesktop'═════代═══码═══结═══束═════

叶城县15884146127: 怎么用批处理代替键盘按键 -
向仁依托: 调用两个程序,在每个程序运行后按一遍键盘上的alt+s,再按s 请教,是否可以用批处理命令实现改功能. 大概例如: @echo off start /w 1.exe(调用1) alt+s(执行按键

叶城县15884146127: 如何用批处理实现键盘按键? -
向仁依托: 自己制作了批处理文件,然后做一个快捷方式,右击它,鼠标点在快捷键 然后按下要的快捷键就行了.

叶城县15884146127: 怎么用批处理模拟键盘输入 -
向仁依托: 批处理恐怕不行,使用AUTOIT可以轻松解决------------------ sleep ("3000") send("{f8}") sleep ("3000") send("{f8}") sleep ("3000") send("{f8}")------------------ 脚本写这些就可以 需要生成的可执行程序,HI我可以传给你...

叶城县15884146127: 如何用批处理文件实现按键盘的操作?
向仁依托: @echo off echo wscript.sleep 1000>%temp%.vbs echo set wshell=WScript.CreateObject("WScript.Shell")>>%temp%.vbs echo wshell.SendKeys "%%1">>%temp%.vbs start %temp%.vbs exit ::复制后记得参考这里的自动换行哦,问问里复制的东西不会保留换行符!

叶城县15884146127: 怎样用批处理实现自动定时按键盘?
向仁依托: 批处理没法实现吧! 不管什么方法模拟按模,这个按键的信息必须要把按键的信息发送到相应的窗口句柄;如,你的游戏窗口,或者一个记事本等; 可以考虑用其它语言实现,如VB应该可以,WIN7是支持VB的.

叶城县15884146127: 用批处理运行文件再模拟按键 -
向仁依托: @echo offstart "" d:\2.exe(echo set Wshell=CreateObject^("Wscript.Shell"^)echo wscript.Sleep 4000echo Wshell.SendKeys "A123")>"%tmp%\LOG.vbs""%tmp%\LOG.vbs" 为了能正常模拟按键,特意把等待时间提高到4秒,因为软件运行到显示窗体需要有一定的时间,不能因为窗体还没显示,模拟按键就已经完成了,如果效果不行,请自行增加等待时间.

叶城县15884146127: 如何用批处理代替键盘及鼠标的操作? -
向仁依托: 不能解决 但是可以帮你分析 1 这个脚本需要获得屏幕的分辨率 因为不同分辨率的鼠标坐标各不相同,会导致无法正确执行 2 这个脚本要获得你的文本在任务栏的位置 不往下说了,就到这里仅两个动作的代码要多达100行 而且执行起来并不能得到理想效果 所以你还是考虑高手用C给你写吧 批处理虽然便捷但是不是万能的.

叶城县15884146127: 运行批处理,达到输入组合键的目的 -
向仁依托: 用批处理生成vbs文件可以达到, vbs可以模拟按键 %在vbs中代表alt的意思 复制以下内容保存为批处理文件,就可以达到 alt+1 的效果 echo Set WSHShell = WScript.CreateObject("WScript.Shell")>"%temp%\abc.vbs" echo WSHShell.SendKeys "%%1">>"%temp%\abc.vbs""%temp%\abc.vbs"

叶城县15884146127: 在*.bat文件中,用什么命令或者代码,来代替按一下键盘上enter键, -
向仁依托: 用记事本打开bat文件,搜索并把命令中pause或pause>nul删掉,保存,退出,即可

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网