• 締切済み

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 が付くファイル名が事実上使えず、少々困っています。 解決策をご存知の方がいらっしゃいましたら、ご教授ください。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

TeraTermは使っていませんが ・・・ エスケープ文字を2個重ねたらうまくいきませんか "\\newlog.txt"といった具合で

関連するQ&A

  • 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マクロでファイル一覧を表示させたい

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

  • 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 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.その他、期待しないコード等が、ログに残されてしまいます。 送出したコマンド、受け取ったレスポンス以外をログに残さないことは可能でしょうか? 以上、宜しくお願いいたします。

  • TTPMACRO マクロ ATコマンド エラー

    Teratermマクロを使って、ポートへATコマンドを送出しようとしています。 ポートが整っていないうちに、ATコマンドを送出した場合等のエラーを キャッチしたいのですが、方法がわかりません。 サジェスチョン願います。 test.bat------------------ ttpmacro /v test.ttl echo %ERRORLEVEL% ------------------------ test.ttl------------------- connect '/c=4' sendln "AT+xxxxx" pause 1 disconnect ------------------------- 正常なら、 Teratermの画面に ATコマンド OK と表示されますが、ポートが準備できていない(ポートがない) 時の画面は、「全くなし」です。 上記のTTLマクロは、問題は何もなかったかのごとくに終了となります。 多分、connect '/c=4' のところで、エラーとなっているのですが、 キャッチする方法がほしいです。 また、ペアレントへのそのエラーを伝える方法もほしいです。 上記では、echo %ERRORLEVEL% を書いていますが、0で、役に立っていません。 宜しくお願いいたします。

  • TeraTermでSSH SCP

    TeraTermでSSH SCPを使いLinuxからWindowsにファイル転送をしました。 出てきたウィンドウにFrom:にa.txt、 To: にC:\testを記入してreceiveボタンを押しました。 ファイル転送は成功しましたが、このとき、コマンド入力で実行すると、どのようなコマンドが実行されているのでしょうか。

  • Teratermマクロでパッケージを調べたい

    CentOSが10台ぐらいあります。 <やりたいこと> 1.調べたいサービス(パッケージ名)をservice.txtとして保存しています。  <service.txtの中身>  httpd  vsftpd 2.調べたいCentOSサーバのホスト名(IPアドレス)をhost.txt保存しています。  <host.txtの中身>  192.168.1.1  192.168.1.2(以降10台文記述してある) 3.service.txtから一行サービス名を読み込んで、 ・「yum list installed | grep "service.txtから読み込んだサービス名(htpd等)"」を作成。 4.host.txtから一行サービス名を読み込んで、読み込んだサーバにログインして、   3で作成したコマンドを実行。 5.実行結果を「hitserver.txt」に記述。 という流れをマクロで作成しました。 実行結果として2種類の内容が出てきます。 <インストールされているサーバA> httpd.x86_64 2.2.15-15.el6.centos.1 httpd-tools.x86_64 2.2.15-15.el6.centos.1 のように表示されます。 インストールされていないサーバBであれば、結果に何も表示されません。 <インストールされているサーバB> なにもなし インストールされていないサーバBの情報は、hitserver.txtに必要ないので、 ヒットしたサーバA情報を書き込ませたいと考えているのです。 そこで、 「インストールして見つかった情報(コマンド結果)を変数に放り込む」といった事は出来ないのでしょうか? 見つかった情報を変数に放り込んで、teratermマクロのif文で比較したいと思っているのです。 その後、host.txtにサーバ情報を書き込ませればやりたいことが出来るかなと思っています。 ご教授よろしくお願いします。

  • 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マクロの初心者です。 マクロで機器と通信しようとしたのですが上手く行きません。 機器はデータの先頭に[STX]、終端に[ETX]が付く、次のような文字列を 送ってきます。  [STX] データ文字列 [ETX] これに対して、TeraTerm側からは[ACK]の文字を送らなければなりません。 そこで次のようなマクロを作ってみましたが、駄目でした。。  1: while 1 ;無限ループ  2: wait #3 ;ETXを待つ  3: send 6 ;ACKを送る  4: endwhile 2行目の後に、pause文を入れたりして調べたところ、どうも2行目が実行 されていないようです。 分かる方がいましたら、教えてください。

  • TeraTermマクロでssh認証画面で反応なし

    サーバーへ自動ログインするために、次のようなTeraTermマクロを作成し、 pcのコマンドプロンプトでバッチファイルを実行しました。 ・TeraTermマクロ:teracon.ttl  connect 'xx.xx.xx.xx /ssh /2 /auth=xxxxx /user=yyyyy /passwd=zzzzz' ・TeraTermマクロ実行用バッチファイル  @echo on  "C:Program File\teraterm\ttpmacro.exe" "%~dp0teracon.ttl" このマクロを実行したところ、数名が正常にログインできませんでした。 状況としてはssh認証画面で止まったままになり、OKボタンは反応せず、 接続断ボタンは反応します。 ただし、このマクロを使用した全員とも、手動ではTeraTermを起動し、 サーバーへログインできております。 また、ssh認証画面で止まった人の/var/log/secureのログは次のとおりで、 session opened for user xxx by (uid=0)になっており、ssh認証は正常に 実行されているように見えます。 省略 localhost sshd[4257]: Accepted password for xxx from xx.xx.xx.xx port 2534 ssh2 省略 localhost sshd[4257]: pam_unix(sshd:session): session opened for user xxx by (uid=0) ※:TeraTermのバージョンは4.74です。 以上のことからサーバー側には、問題はないように見えます。 マクロおよびPC側に何か原因があるように思われます。 どなたか対処方法をご存知でしたら、教えてください。 よろしくお願いします。

専門家に質問してみよう