You are not logged in. This forum allows only logged in users to post. If you want to post in the forum, please log in.
下载
开发软件
账户
下载
开发软件
登录
我忘记用户名和密码了
创建帐户
语言
帮助
语言
帮助
×
登录
登录名
密码
×
我忘记用户名和密码了
简体中文翻译状态
类别:
软件
用户
PersonalForge
Magazine
Wiki
搜索
OSDN
>
浏览软件
>
Terminals
>
Serial
>
Tera Term
>
论坛
>
公开讨论
>
実行コマンドの結果解析
Tera Term
描述
项目概述
开发人员仪表板
项目的网页
开发人员
Image Gallery
List of RSS Feeds
Activity
统计
历史
下载
File Release
List of Releases
统计
File Storage
Files
统计
源代码
Code Repository list
Subversion
查看仓库
CVS
查看仓库
任务单
Ticket List
里程碑列表
Type List
组件列表
List of frequently used tickets/RSS
Submit New Ticket
文档
Wiki
FrontPage
Title index
Recent changes
Doc Mgr
列表文档
沟通
论坛
List of Forums
帮助论坛 (428)
公开讨论 (173)
Mailing Lists
list of ML
ttssh2-commit
ttssh2-dev
ttssh2-users
新闻
论坛:
公开讨论
(Thread #27293)
Return to Thread list
RSS
実行コマンドの結果解析 (2010-09-08 19:48 by
(del#24082)
#52812)
Create ticket
ちょっと業務でハマっていたので、教えてください。
やりたいことは以下のとおりです。
目的:コマンドを実行して、その実行結果(一行)を受信し、その内容を解析する。
コマンド名: 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 がいつまでも返ってこない(永遠に待っている)ことがあります。
もっとスマートなやりかたがあれば、ご教示願います。