惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
T
The Blog of Author Tim Ferriss
U
Unit 42
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
Vercel News
Vercel News
MongoDB | Blog
MongoDB | Blog
P
Proofpoint News Feed
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
Blog — PlanetScale
Blog — PlanetScale
I
InfoQ
Y
Y Combinator Blog
F
Full Disclosure
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
G
Google Developers Blog
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
S
SegmentFault 最新的问题
腾讯CDC
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Visual Studio Blog
Apple Machine Learning Research
Apple Machine Learning Research
人人都是产品经理
人人都是产品经理
Recent Commits to openclaw:main
Recent Commits to openclaw:main
The Register - Security
The Register - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Azure Blog
Microsoft Azure Blog
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
F
Fortinet All Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
Hugging Face - Blog
Hugging Face - Blog
T
Threatpost
GbyAI
GbyAI
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
L
LangChain Blog
T
Tenable Blog
C
Cisco Blogs
T
Threat Research - Cisco Blogs
Google Online Security Blog
Google Online Security Blog

博客园 - 疾行者

关于开发ActiveX 控件的安装问题 [转]安卓巴士Android开发神贴整理 Ruby On Rails 安装手记 偶然发现5年前的编程实习日记,特与博客园同仁分享一下 实现客户端的DataSet - 疾行者 - 博客园 [导入]Linq学习笔记(1.7)——First、ElementAt、Any、all [导入]Linq学习笔记(1.8)——Count、Sum、Min、Max、Average [导入]Linq学习笔记(2.1)——初识 DLinq [导入]Linq学习笔记(2.2)——深入DLinq查询 [导入]Linq学习笔记(2.3)——DLinq高级操作 NHibernate 多主键设置 - 疾行者 - 博客园 c#的一些技巧 - 疾行者 - 博客园 人的一生,到底在追求甚么?... XP 风格的可拖动列、可排序、可改变宽度的DataGrid的例子 webservice结合dthml的简单例子(二,dhtml) 文件的上传下载 asp.net访问组件失败,请在web.,config中加 数字转化成大写类 javascript小技巧&&JavaScript[对象.属性]集锦 [转载了多篇]
AutoIt应用技巧示例[转] - 疾行者 - 博客园
疾行者 · 2008-01-18 · via 博客园 - 疾行者

用AutoIt实现了一个相对复杂的操作,其中用到了不少典型特性,在此总结一下。

### 遍历窗口

$var=WinList("7-Zip 文件管理器")
For $i=1 to $var[0][0]
WinActivate($var[$i][0])
WinWaitActive($var[$i][0])
……
Next

WinList返回二维数组,$var[0][0]为匹配的窗口个数,$var[$i][0]为窗口标题,$var[$i][1]为窗口句柄

### 字符串输入

ClipPut($printdir)
Send("^v{Enter}")

简单的输入可以直接用Send()模拟键盘动作,对于复杂的字符串,可以借助剪贴板函数ClipPut

### 遍历文件

$dwg_handle = FileFindFirstFile("*.dwg")
While 1
$dwg = FileFindNextFile($dwg_handle)
If @error Then ExitLoop
……
WEnd

遍历目录下所有的.dwg文件

### 文件读写

$outfile = FileOpen($printfile, 2)
if $outfile = -1 Then
MsgBox(0,"Error","Unable to create file")
Exit
EndIf

FileWriteLine($outfile, 'AutoCAD 2000 Batch Plot List File')

这部分的功能不是特别强,之提供了简单的行读写函数。而我的任务需要将每个文件的信息写入列表,文件的总数则在列表的开头,因此只好调用了Notepad进行查找替换,谁让windows下没有自带的Sed呢。

完整的示例如下,这个脚本的功能是遍历系统中的7zip窗口,将压缩包内的文件夹解压,然后把所有文件夹中的.dwg文件按一定的格式写入打印列表,并用AutoCAD批处理打印程序打开。所有的.doc文件用Word打开,


;功能:生成AutoCAD批处理打印列表
;作者:rogerz.zhang
;日期:2006.11.24

Opt("WinWaitDelay",100)
Opt("WinTitleMatchMode",2)
Opt("WinDetectHiddenText",1)
Opt("MouseCoordMode",0)

$printdir = "C:\Documents and Settings\public-proj\桌面\打印"
$printfile = "C:\Documents and Settings\public-proj\桌面\print.bp3"
$word = "c:\Program Files\Microsoft Office\Office10\WinWord.exe"
$st = '"C:\Documents and Settings\public-proj\My Documents\st.dwg|st"'
$count = 0

Unzip()
CreateList()
EditList()
BatchPlot()

Func Unzip()
$var=WinList("7-Zip 文件管理器")
For $i=1 to $var[0][0]
WinActivate($var[$i][0])
WinWaitActive($var[$i][0])
Send("+{NUMPADADD}{F5}")
WinWaitActive("复制")
ClipPut($printdir)
Send("^v{Enter}")
WinWaitActive($var[$i][0])
Send("!{F4}")
Next
EndFunc

Func CreateList()
$outfile = FileOpen($printfile, 2)
if $outfile = -1 Then
MsgBox(0,"Error","Unable to create file")
Exit
EndIf
FileWriteLine($outfile, 'AutoCAD 2000 Batch Plot List File')
FileWriteLine($outfile, '"BATCH FILE NAME",' & $printfile)
FileWriteLine($outfile, '"BATCH JOURNAL LOG ON?",#TRUE#')
FileWriteLine($outfile, '"BATCH JOURNAL LOG FILENAME","C:\Program Files\AutoCAD 2002\Support\BatchPlt\BPJOURNL.LOG"')
FileWriteLine($outfile, '"BATCH JOURNAL HEADER",""')
FileWriteLine($outfile, '"BATCH JOURNAL USER COMMENT",""')
FileWriteLine($outfile, '"BATCH JOURNAL APPEND?",#FALSE#')
FileWriteLine($outfile, '"BATCH ERROR LOG ON?",#TRUE#')
FileWriteLine($outfile, '"BATCH ERROR LOG FILENAME","C:\Program Files\AutoCAD 2002\Support\BatchPlt\BPERROR.LOG"')
FileWriteLine($outfile, '"BATCH ERROR HEADER",""')
FileWriteLine($outfile, '"BATCH ERROR APPEND?",#FALSE#')
FileWriteLine($outfile, '"BATCH NUM FILES",__COUNT__')
FileWriteLine($outfile, '"BATCH WIN SIZE","160,24"')
FileChangeDir($printdir)
$dir_handle = FileFindFirstFile("*.*")
If $dir_handle = -1 Then
MsgBox(0, "Error", "No files/directories matched the search pattern")
Exit
EndIf
While 1
$dir = FileFindNextFile($dir_handle)
If @error Then ExitLoop
FileChangeDir($dir)
$dwg_handle = FileFindFirstFile("*.dwg")
$doc_handle = FileFindFirstFile("*.doc")
While 1
$dwg = FileFindNextFile($dwg_handle)
If @error Then ExitLoop
$count = $count + 1
FileWriteLine($outfile, '"DWG#' & $count & 'FILENAME","' & @WorkingDir & '\' & $dwg & '"')
FileWriteLine($outfile, '"DWG#' & $count & 'LAYOUT","*当前选项卡*"')
FileWriteLine($outfile, '"DWG#' & $count & 'PLOTSETUP",' & $st)
FileWriteLine($outfile, '"DWG#' & $count & 'PLOTDEVICE","缺省"')
FileWriteLine($outfile, '"DWG#' & $count & 'LAYERS",""')
FileWriteLine($outfile, '"DWG#' & $count & 'PLOTAREA",""')
FileWriteLine($outfile, '"DWG#' & $count & 'PLOTSCALE",""')
FileWriteLine($outfile, '"DWG#' & $count & 'SCALECUSTOM",#FALSE#')
FileWriteLine($outfile, '"DWG#' & $count & 'SCALELW",#FALSE#')
FileWriteLine($outfile, '"DWG#' & $count & 'PLOTFILE",""')
WEnd
While 1
$doc = FileFindNextFile($doc_handle)
if @error Then ExitLoop
; Run($word & ' "' & @WorkingDir & '\' & $doc & '" /mFilePrintDefault', "", @SW_HIDE)
Run($word & ' "' & @WorkingDir & '\' & $doc, "")
WEnd
FileChangeDir("..")
FileClose($doc_handle)
FileClose($dwg_handle)
WEnd
FileClose($outfile)
FileClose($dir_handle)
EndFunc

Func EditList()
Run("notepad " & $printfile)
If not WinActive("print - 记事本") Then WinActivate("print - 记事本")
WinWaitActive("print - 记事本")
Send("^h")
WinWaitActive("替换")
Send("__COUNT__{tab}")
ClipPut($count)
Send("^v!a")
Sleep(50)
Send("{ESC}")
iF Not WinActive("print - 记事本") Then WinActive("print - 记事本")
WinWaitActive("print - 记事本")
Send("^s")
Sleep(50)
Send("!{F4}")
EndFunc

Func BatchPlot()
If Not WinExists("AutoCAD 批处理打印实用程序") Then
Run("C:\Program Files\AutoCAD 2002\Support\BatchPlt\batchplt.exe")
WinWaitActive("AutoCAD 2002")
WinWaitActive("AutoCAD 批处理打印实用程序")
EndIf
If Not WinActive("AutoCAD 批处理打印实用程序") Then WinActivate("AutoCAD 批处理打印实用程序")
WinWaitActive("AutoCAD 批处理打印实用程序")
Send("^o")
WinWaitActive("打开批处理打印列表文件")
ClipPut($printfile)
Send("^v{Enter}")
EndFunc