0

基本的にテキストの最初の行をコピーしてから、同じ行に再度貼り付ける 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}")
4

1 に答える 1

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-...-ループで使用されます。

スリープ時間を 100ms に減らすことができます。また、FileReadLine はファイルの終わりに達するまで使用できるため、FileReadLine とおそらく FileWriteLine を使用してタスクを実行する方がはるかに簡単です。@error を -1 に設定します。詳細については、ドキュメントを参照してください。

于 2013-01-11T12:57:19.073 に答える