我有一个自动脚本,可以基本复制第一行文本,然后再将它粘贴到同一行。我想一遍又一遍地做到这一点,直到文件结束。有什么建议吗?
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}")
答案 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。