找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 41416|回复: 14

[其他] 批处理也autoit,自动操作word

[复制链接]
发表于 2010-6-6 00:37:08 | 显示全部楼层 |阅读模式
这是一个专为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,操作更方便哦

评分

参与人数 5PB +58 技术 +2 +1 收起 理由
523066680 + 8 + 1 全体投地
随风 + 20 + 1 + 1 感谢分享!
xinje + 10 有趣极了!用SendMessageA后台发送可能更有 ...
vsbat + 10 支持
plp626 + 10 好玩中带着技术,欣赏

查看全部评分

发表于 2010-6-6 00:43:35 | 显示全部楼层
==============
你也太能搞了~ ~
==============
发表于 2010-6-6 06:37:58 | 显示全部楼层

LZ可否将 b2.txt原文贴出,繁体看到是乱码

(1)LZ可否将b2.txt原文贴出,繁体看到是乱码
(2) 可否也写出Excel 版本的?

[ 本帖最后由 pdanniel66 于 2010-6-6 06:44 编辑 ]
发表于 2010-6-6 11:20:59 | 显示全部楼层
首先感谢楼主的热心
之前不能运行的原因已经找到
:loop
%initword:wo=001 - Microsoft Word% 此句001后面的后缀名去掉就ok了。

set #1=001.doc - Microsoft Word 这句也带了个后缀名,不去掉也可以,不知道会不会影响其他。

if !#! neq 10 goto :loop 没有正确消息返回时,循环等待
不解的是 !#! 在什么情况下会 等于10?看代码好像只看到一句 set #=00
 楼主| 发表于 2010-6-6 11:43:42 | 显示全部楼层
re 随风
你说的原因我终于明白了,主要是因为windows 文件夹选项里[启用]和[禁用]“隐藏已知文件类型的扩展名”时窗口标题会有所不同,就是也会出现隐藏扩展名的情况,所以造成窗口标题不对了,machwo.exe 也就没能正确吸附word窗口。

这个machwo.exe是通过修改CMD的变量内存来将结果返回给CMD的,所以你在b1.bat里没有再次看到对“#”的附值,当成功吸附word窗口后,machwo.exe会把#变量的值改为10
b1.bat里面的语句在pause暂停后也能自动继续往下运行的原因,也是因为machwo.exe在完成它的任务后,会给CMD窗口发送一个按键,去击活CMD窗口因为pause而暂停的等待。
发表于 2010-6-6 12:07:56 | 显示全部楼层
是否能操作指定标题的窗口,而不是仅仅WORD?
发表于 2010-6-6 12:54:08 | 显示全部楼层
我汗  LZ爱上memory control啦
 楼主| 发表于 2010-6-6 19:11:17 | 显示全部楼层

回复 6楼 7楼的帖子

re 6 楼
这个machwo.exe只对word有效,虽然也可以改成对任何窗口,但是,在还没有确定这样做的利害关系时,还不想改成任意的。

re 7楼
呵呵~~3方直接写内存,把结果回传给BAT,效率是没得说的,并且不用多次调用三方去“吃”内存,虽然一次“吃”得不多,可是多次调用后就不得了了。

[ 本帖最后由 netbenton 于 2010-6-6 19:22 编辑 ]
发表于 2010-6-6 22:07:48 | 显示全部楼层
猛男, 小弟佩服灌水+留名
发表于 2010-6-11 14:53:14 | 显示全部楼层
佩服,佩服!!!!!!!!!!!!
发表于 2010-6-26 14:33:56 | 显示全部楼层
的确不错,有创意,佩服LZ!
发表于 2010-7-21 22:51:16 | 显示全部楼层
楼主,我来提个建议啊,就是可以交换数据
发表于 2016-8-6 22:41:58 | 显示全部楼层
本帖最后由 cjiabing 于 2016-8-6 22:44 编辑

@netbenton  兄,不知道是不是版本问题,这次命令没有成功,升级下代码喂!~
我现在用的是word2010,打开002.doc的窗口显示“兼容模式”


系统:Windows 7
word:2010
发表于 2016-8-6 23:26:11 | 显示全部楼层
回复 13# cjiabing

可以用ahk模拟
  1. Run, "002.doc"
  2. WinWait, 002.doc,,
  3. HKL:=DllCall("LoadKeyboardLayout", Str, 0x08040804, UInt, 1)
  4. ControlGetFocus, ctl, A
  5. SendMessage, 0x50, 0, HKL, %ctl%, A
  6. BlockInput on
  7. Sleep, 500
  8. Send, {Down 4}{Right}{Ins}秋风夜雨
  9. Sleep, 300
  10. Send, ^{Down 2}123456789012345678
  11. Sleep, 300
  12. Send, ^{Down 2}男女
  13. Sleep, 300
  14. Send, ^{Down 3}1998
  15. Sleep, 300
  16. Send, ^{Down 2}7
  17. Sleep, 300
  18. Send, ^{Down 3}月球
  19. Sleep, 300
  20. Send, ^{Down 2}团员
  21. Sleep, 300
  22. Send, ^{Down 2}贵族
  23. Sleep, 300
  24. Send, {F12}
  25. WinWait, 另存为,,
  26. Sleep, 300
  27. Send, {BS}
  28. Sleep, 300
  29. Random, rand, 1000, 9999
  30. SendRaw, %rand%.doc
  31. Sleep, 500
  32. ControlClick, Button8, 另存为,, L
  33. ;Send,!s
复制代码

评分

参与人数 1PB +10 技术 +1 收起 理由
cjiabing + 10 + 1 感谢分享

查看全部评分

发表于 2016-8-7 11:52:30 | 显示全部楼层
回复 14# pcl_test


    试了一下,效果不错,不过要花点时间来学习和整理,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:47 , Processed in 0.024237 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表