2013-01-11 46 views
0

我有一个autoit脚本,它基本上复制了第一行文本,然后再将它粘贴到同一行中。我希望一遍又一遍地做到这一点,直到文档结束。有什么建议么?loop autoit脚本直到文档结尾

Run("notepad.exe filename.txt") 
WinWaitActive("Untitled - Notepad") 
Send("+{END}") 
Send("^C") 
Sleep (1000) 
Send("{END}") 
Sleep (1000) 
Send(" ") 
Send("^V") 
Send("{HOME}") 
Send("{DOWN}") 

回答

1

您可以使用此代码:

$filename = "filename.txt" 

Run("notepad.exe " & $filename) 
WinWaitActive($filename & " - Notepad") 

$lines= StringRegExp(FileRead($filename), @CR, 3) 
$count = UBound($lines) 

For $i = 0 To $count 
    Send("+{END}") 
    Send("^C") 
    Sleep (1000) 
    Send("{END}") 
    Sleep (1000) 
    Send(" ") 
    Send("^V") 
    Send("{HOME}") 
    Send("{DOWN}") 
Next 

你必须等待与文件名,在它的标题的窗口。如果文件名里面有空格,你需要在notepad.exe后面引用参数。

不知何故,你需要得到行号的数量。我只是用AutoIt读取整个文件并搜索“回车”。生成的数组具有行号的大小。然后该号码用于For -...- To -...- Loop。

您可以将睡眠时间减少到100ms。使用FileReadLine和FileWriteLine来完成你的任务会容易得多,因为可以使用FileReadLine直到文件结束。它会将@error设置为-1。有关更多信息,请参阅documentation