循环自动脚本直到doc结束

时间:2013-01-11 00:49:24

标签: windows 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 个答案:

答案 0 :(得分: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。

您可以将睡眠时间减少到100毫秒。使用FileReadLine和FileWriteLine来完成任务要容易得多,因为可以使用FileReadLine直到达到文件末尾。它会将@error设置为-1。有关详细信息,请参阅documentation