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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 疾行者

关于开发ActiveX 控件的安装问题 [转]安卓巴士Android开发神贴整理 Ruby On Rails 安装手记 偶然发现5年前的编程实习日记,特与博客园同仁分享一下 实现客户端的DataSet - 疾行者 - 博客园 [导入]Linq学习笔记(2.3)——DLinq高级操作 - 疾行者 [导入]Linq学习笔记(2.2)——深入DLinq查询 [导入]Linq学习笔记(2.1)——初识 DLinq [导入]Linq学习笔记(1.8)——Count、Sum、Min、Max、Average [导入]Linq学习笔记(1.7)——First、ElementAt、Any、all 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