• ベストアンサー

teratermマクロでファイル一覧を表示させたい

teratermマクロで、lsで取得したファイル一覧をmessage boxで出力させたいです。 しかし、recvlnを用いると、一行しか取得できないので、一覧を表示することができません。 この場合、どうすればよいでしょうか。 よろしくお願いいたします。 例 sendln 'ls -l test/txtfile' 結果→ 1.txt 2.txt 3.txt ‥‥ recvln recvln ←これだと一行しか取得できません。 messagebox inputstr '確認'

質問者が選んだベストアンサー

  • ベストアンサー
noname#259146
noname#259146
回答No.1

ループさせて複数行を取得します。 ループの終了判断が難しいところですが’$’を終了判断としてマクロ終了後にターミナル画面でエンターすると表示されるとりあえずのサンプルです。 問題点 messagebox は表示数に制限がありますのですべて表示されません。 サンプル setsync 1 sendln 'ls -l test/txtfile'; recvln result=1 recvln strscan inputstr '$' while result=0 strconcat msg inputstr strconcat msg #13 recvln strscan inputstr '$' endwhile setsync 0 messagebox msg '確認'

trtmwkrn
質問者

お礼

ありがとうございます。さっそくやってみます。 また、問題点も兼ねて考えてみます。

関連するQ&A

  • teratermで、ファイル名をinputstrに代入する

    teratermを使って、ftpでputさせたいと思います。 OSは、Linuxベースです。 コマンドラインに於いて $ ls ho* hoge1.txt hoge2.txt   ← この1行を、inputstrに代入させたい 自分で作ってみたのは、こんな感じ timeout = 5 sendln 'ls ho*' result = 0 wait 'ho' if result=1 recvln statusbox result 'result ' pause 1 ; ダイアログボックスを閉じる closesbox messagebox inputstr 'inputstr ' これを実行させると、「$ ls ho*」がinputstr に入っている。何故か? waitによって期待していた文字列(hoge1.txt hoge2.txt)を、inputstr に入れたいと思います。 どうしたらいいでしょうか。

  • teratermマクロ 文字列分岐

    お世話になっております。 下記の件ご教授願えませんでしょうか? teratermを使いサーバに文字列を送り、返ってきた 文字列によって処理を行いたく、下記のようにマクロ を作成したのですが、どうやら、5行目にエラーが発生 してしまい中断という形になってしまいます。 --------------------------------- Prompt1 = '?' sendln 'y' setsync 1 recvln if inputstr = Prompt1 then sendln 'y' else end if setsync 0 --------------------------------- やりたいことは文字列'y'を送信し、 プロンプトで'?'以外の文字列が出力されるまで、 'y'を送信し続ける。 という内容です。 お手数ですがご教授願います。 ちなみにですが、teratermのバージョンは4.57です。

  • TeraTermでのマクロ

    TeraTermでマクロを使用しているのですが不明な点があります。 現象: ルータからのログを取得しようとしているのですが 5行目、「show run」コマンドを入力してから ログ内容が返ってくるまで、5秒程かかってしまいます。 その為、どうもtimeoutしているようで、ログの内容が 返ってくる前に、マクロが終了してしまいログの取得ができません。。 (6行目「wait 'A#'」が効きません・・・) TeraTermのHELPを参照したのですが、解決に至っていません。 解る方いましたら、教えてください。 以下に、マクロの内容を示します。 ※説明の理由上、行番号を付けています。(行番号:) ************************************** 1: pause 1 2: setsync 1 3: timeout = 10 4: logopen 'c:\log\show run.txt' 0 0 5: sendln 'show run' 6: wait 'A#' 7: setsync 0 8: pause 1 9: logclose **************************************

  • TeraTerm マクロの getdir コマンドについて

    TeraTerm マクロで getdir を実行すると、取得されるパス内に制御文字が含まれる場合に正しく取得できません。 例えば以下のような内容で ttl ファイルを作成します。 getdir filename strconcat filename "\newlog.txt" messagebox filename "check" → c:\test\sample.ttl として保存。 これを実行させると 期待するメッセージボックスの表示は「c:\test\newlog.txt」なのですが、実際には \t や \n が制御文字として解釈されてしまいます。 先頭や末尾に t や n が付くフォルダ名、先頭に t や n が付くファイル名が事実上使えず、少々困っています。 解決策をご存知の方がいらっしゃいましたら、ご教授ください。

  • TeraTermマクロについて

    TeraTremのマクロを作成しています。 connect \'ホスト名\' UsernamePrompt = \'login:\' Username = \'ログイン\' PasswordPrompt = \'Password:\' Password = \'パスワード\' wait UsernamePrompt sendln Username wait PasswordPrompt sendln Password sendln \'df -k\' これでディスク容量を表示させることが出来ました。 表示された内容をファイルに出力する方法は、ありますでしょうか? 色々試してみましたが上手くいきません。 この方法でなくても自動でディスク容量を取得できる方法がありましたら教えて下さい。 よろしくお願いします。

  • TeraTermマクロで入力した文字を表示し接続

    TeraTermマクロで下記の構文で、インプットされた文字を メッセージ内に表示するにはどのような表記をすれば良いのでしょうか? inputbox '接続先ホストを入力してください''input please' INPUT = inputstr strlen INPUT if result = 0 then messagebox '入力が空白になっています。終了します。' 'Input error' end endif messagebox  ↑上記で 入力した文字+○○○に接続いたします。と表示をしたい。 connect COMMAND ようするに、入力したホスト名メッセージを表示したいのですが どのような構文表記すれば良いか教えて下さい。

  • teratermマクロについて質問です。

    teratermマクロについて質問です。 自動ログ取得マクロを作っています。 動作としては、 外部のaddress.txtにかかれたホスト(IPアドレス)一覧を読み込み、 それを1行ずつtelnet接続していき、 特定の状態確認コマンドを投入していく、というものなのですが、 address.txtの例 192.168.10.1 192.168.20.1 192.168.30.1 それぞれのホストはログインID、パスワードが異なるため、 外部のaddress.txtを拡張して下記のようなものを作成して ホスト名毎に対応したログインID、パスワードを読み込めるように したいです。 192.168.10.1,<10のID>,<10のPASS> 192.168.20.1,<20のID>,<20のPASS> 192.168.30.1,<30のID>,<30のPASS> そもそも可能かどうかもわかりませんが、 もし可能であればお知恵をお借りしたいです。 宜しくお願い致します。

  • Teraterm 「マクロ停止」状態になった場合

    Teraterm 「マクロ停止」状態になった場合、次のマクロに進むにはどうしたら よいでしょうか。(タスクスケージュールにて一括ログ取得をしています) バッチにて「c:\list.txt 」に「aaa.ttl 、bbb.ttl、ccc.ttl」のような ログを取得するマクロを記載しています。 途中で「マクロ停止」状態になった場合、次のマクロに進む事なく 一括ログ取得マクロが停止してしまいます。 下記、バッチにてなります。 --------------------------------- @echo off set macro="C:\Program Files (x86)\teraterm" cd %macro% for /f %%i in do (c:\list.txt) ttermpro.exe %%i exit ------------------------------------------ ---------------------------------

  • Teraterm macro

    Teratermを使って仕事をしようとしています。 概要は、シリアルポートにATコマンドを送って、そのレスポンスをチェックというだけのものですが、 いかんせん、多数の対象製品があります。仕事の正確性、迅速性から、自動化したいと考えています。 (1)シリアルポートの接続 (2)ログファイルのオープン (3)ログファイルに時刻の記録 (4)ATコマンドの送出 (5)ログファイルに区切りの線を入れる (6)ログファイルのクローズ (7)シリアルポートのクローズ DOSプロンプトにて、 ttpmacro.exe test.ttl を入力して、作業を進めたいと考えます。 ここに、test.ttl は、Teratermと同じフォルダにおきます。 test.ttl------------------- connect '/c=4' pause 1 logopen "teraterm.log" 1 1 pause 1 gettime datetime '-%Y%m%d-%H%M%S' ????? sendln "AT+xxxxx" pause 1 sendln "AT+YYYY" pause 1 logwrite "-----------"#13#10 logclose disconnect pause ------------------------- サジェスチョンをいただきたいのは; 1.時刻(datetime )を如何にすれば、ログに残すことができるのか? 2.pauseは、sendlnの後には、確実に必要ですが、他の部分は、まだ、チェックしていません。 絶対に不要と言う箇所をサジェスチョン願います。 3.マクロの終了後、Teratermのウィンドウが残ったままになってしまいます。   2回上記(ttpmacro.exe test.ttl)を実行させると、2つのTeratermウィンドウが残ってしまいます。   マクロ終了後、如何にして、ウィンドウをクローズさせることができますか? 4.その他、期待しないコード等が、ログに残されてしまいます。 送出したコマンド、受け取ったレスポンス以外をログに残さないことは可能でしょうか? 以上、宜しくお願いいたします。

  • teratermマクロでのサーバー接続方法

    teratermマクロのマクロを使ってサーバーに接続する方法を探しています。 ・リストボックスにサーバー名(日本語)を表示 ・サーバーのアカウントとパスワードはサーバーごとに違う ・パスワードは一括でおいておきたいので、getpasswordで取得したい teratermマクロは多次元が配列が使えないようですが、 それぞれの情報を個々に配列でもつ方法以外に何か方法があったら 教えてください。 よろしくお願いします。