Thread: 実行コマンドの結果解析

実行コマンドの結果解析 (2010-09-08 19:48, yutakapon, #52812)

ちょっと業務でハマっていたので、教えてください。
やりたいことは以下のとおりです。

 目的:コマンドを実行して、その実行結果(一行)を受信し、その内容を解析する。
 コマンド名: dotest
 実行結果例: 0000: 01020304 06070809 ; foo

ようするに、"dotest"プログラムを実行して、その結果が1つの行で返ってくるので、その内容を加工したい、ということです。そのためには、実行結果をいったんバッファに格納する必要があります。

こうした用途を達成したい場合、どのようにマクロを記述するのが適切でしょうか?

1.recvlnを使う

flushrecv
sendln 'dotest'
recvln
messagebox inputstr 'recvln'

 たとえば、recvlnを使い、上記のように書くと、おおむねは期待通りに動作するのですが、まれに受信に失敗することがあります。recvlnは改行コード(0x0a)で判断するので、sendlnでコマンドを送り、コマンド名がエコーバックされたときの改行を拾う場合があるのかと思っています。

2.waitregexを使う

sendln 'dotest'
waitregex '0000: .*\n'
messagebox inputstr 'recvln'

 正規表現を使って、コマンド投入後、一行データを待つというふうにすると、これもだいたい動くのですが、まれに waitregex がいつまでも返ってこない(永遠に待っている)ことがあります。


もっとスマートなやりかたがあれば、ご教示願います。

Reply to #52812×

You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login