标题: [其他] 批处理也autoit,自动操作word [打印本页]
作者: netbenton 时间: 2010-6-6 00:37 标题: 批处理也autoit,自动操作word
这是一个专为cmd批处理写的,模拟按键来实现控制word处理文本的三方:machwo.exe
先把要做的动作写到一个文本里:b2.txt
当运行b2.bat时,就根据预先写好的动作,自动模拟用户操作键盘来实现编辑word文档,
可实现的动作有:
打开/另存/保存文档,在指定行输入文字,修改格式,插入项目,选择段落/复制/粘贴,等等,只要是平时你能用键盘在word上能做到的都可以实现。
===== machwo.exe 关于控制键语法定义 =====
一、模拟shift,Ctrl,Alt键
S() Shift
C() Ctrl
A() Alt
在这里“(”表示键的按下,“)”表示键的放开
二、“?”号跟一个字母,作为模拟其它控制键:
?I Insert
?D Delete
?H Home
?E End
?U PageUp
?W PageDown
?B Backspace
?T Tab
?R Enter
?C Esc
?< 左移
?> 右移
?A 上移
?V 下移
?P Pause
?@ Print [打印]
?1 F1
?2 F2
......(类推)
?9 F9
?0 F10
?- F11
?= F12
三、“+”号跟一数字n,实现上一键N次重复
如:
A+4 连按4次A键
?R+5 连按5次回车键
四、组合形式用法:
C(A) 表示 Ctrl + A
C(ABC) 表示 Ctrl + 依次按A B C
C(A(P)) 表示 Ctrl + Alt + P
S(C()) 同时按下了一次 Shift + Ctrl , 可切换输入法
A(?4) 表示 Alt + F4,可用于关闭窗口
?V+5 下移5行,如缺省+参数则只移一行,
C(?>+6) 表示Ctr + 右方向键按了6次
S(?T+3) 表示Shift + Tab 按了3次
附件里除了该三方外,有一个演示用的word文档,和一个保存操作动作b2.txt,和一个演示该三方具体功能和使用方法说明的b2.bat
链接: https://pan.baidu.com/s/1UP-09PKthNzzBQaRzmggSw 提取码: ukq8 复制这段内容后打开百度网盘手机App,操作更方便哦
作者: plp626 时间: 2010-6-6 00:43
==============
你也太能搞了~ ~
==============
作者: pdanniel66 时间: 2010-6-6 06:37 标题: LZ可否将 b2.txt原文贴出,繁体看到是乱码
(1)LZ可否将b2.txt原文贴出,繁体看到是乱码
(2) 可否也写出Excel 版本的?
[ 本帖最后由 pdanniel66 于 2010-6-6 06:44 编辑 ]
作者: 随风 时间: 2010-6-6 11:20
首先感谢楼主的热心
之前不能运行的原因已经找到
:loop
%initword:wo=001 - Microsoft Word% 此句001后面的后缀名去掉就ok了。
set #1=001.doc - Microsoft Word 这句也带了个后缀名,不去掉也可以,不知道会不会影响其他。
if !#! neq 10 goto :loop 没有正确消息返回时,循环等待
不解的是 !#! 在什么情况下会 等于10?看代码好像只看到一句 set #=00
作者: netbenton 时间: 2010-6-6 11:43
re 随风
你说的原因我终于明白了,主要是因为windows 文件夹选项里[启用]和[禁用]“隐藏已知文件类型的扩展名”时窗口标题会有所不同,就是也会出现隐藏扩展名的情况,所以造成窗口标题不对了,machwo.exe 也就没能正确吸附word窗口。
这个machwo.exe是通过修改CMD的变量内存来将结果返回给CMD的,所以你在b1.bat里没有再次看到对“#”的附值,当成功吸附word窗口后,machwo.exe会把#变量的值改为10
b1.bat里面的语句在pause暂停后也能自动继续往下运行的原因,也是因为machwo.exe在完成它的任务后,会给CMD窗口发送一个按键,去击活CMD窗口因为pause而暂停的等待。
作者: zjw767676 时间: 2010-6-6 12:07
是否能操作指定标题的窗口,而不是仅仅WORD?
作者: Seter 时间: 2010-6-6 12:54
我汗 LZ爱上memory control啦
作者: netbenton 时间: 2010-6-6 19:11 标题: 回复 6楼 7楼的帖子
re 6 楼
这个machwo.exe只对word有效,虽然也可以改成对任何窗口,但是,在还没有确定这样做的利害关系时,还不想改成任意的。
re 7楼
呵呵~~3方直接写内存,把结果回传给BAT,效率是没得说的,并且不用多次调用三方去“吃”内存,虽然一次“吃”得不多,可是多次调用后就不得了了。
[ 本帖最后由 netbenton 于 2010-6-6 19:22 编辑 ]
作者: 523066680 时间: 2010-6-6 22:07
猛男, 小弟佩服灌水+留名
作者: rivch 时间: 2010-6-11 14:53
佩服,佩服!!!!!!!!!!!!
作者: kbsjfans 时间: 2010-6-26 14:33
的确不错,有创意,佩服LZ!
作者: taiji 时间: 2010-7-21 22:51
楼主,我来提个建议啊,就是可以交换数据
作者: cjiabing 时间: 2016-8-6 22:41
本帖最后由 cjiabing 于 2016-8-6 22:44 编辑
@netbenton 兄,不知道是不是版本问题,这次命令没有成功,升级下代码喂!~
我现在用的是word2010,打开002.doc的窗口显示“兼容模式”
系统:Windows 7
word:2010
作者: pcl_test 时间: 2016-8-6 23:26
回复 13# cjiabing
可以用ahk模拟- Run, "002.doc"
- WinWait, 002.doc,,
- HKL:=DllCall("LoadKeyboardLayout", Str, 0x08040804, UInt, 1)
- ControlGetFocus, ctl, A
- SendMessage, 0x50, 0, HKL, %ctl%, A
- BlockInput on
- Sleep, 500
- Send, {Down 4}{Right}{Ins}秋风夜雨
- Sleep, 300
- Send, ^{Down 2}123456789012345678
- Sleep, 300
- Send, ^{Down 2}男女
- Sleep, 300
- Send, ^{Down 3}1998
- Sleep, 300
- Send, ^{Down 2}7
- Sleep, 300
- Send, ^{Down 3}月球
- Sleep, 300
- Send, ^{Down 2}团员
- Sleep, 300
- Send, ^{Down 2}贵族
- Sleep, 300
- Send, {F12}
- WinWait, 另存为,,
- Sleep, 300
- Send, {BS}
- Sleep, 300
- Random, rand, 1000, 9999
- SendRaw, %rand%.doc
- Sleep, 500
- ControlClick, Button8, 另存为,, L
- ;Send,!s
复制代码
作者: cjiabing 时间: 2016-8-7 11:52
回复 14# pcl_test
试了一下,效果不错,不过要花点时间来学习和整理,谢谢!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |