チケット #10266

マクロが切断される?
登録: 2007-04-10 14:39 最終更新: 2007-04-18 10:07

報告者:
担当者:
(未割り当て)
チケットの種類:
状況:
完了
コンポーネント:
(未割り当て)
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
動いてるけど?
ファイル:
なし
投票
点数: 0
No votes
0.0% (0/0)
0.0% (0/0)

詳細

XP端末からTeraTermマクロを使用して、TelNet接続し、
WINDOWS2003サーバ上でバッチを起動するTeraTermマクロを作
成しました。
param2 の終了を待っている間にコンソール上のメッセージが
一杯になりスクロールした瞬間、TeraTermが誤終了してしま
うようです。
下記がマクロの内容です。
Versionは4.51です。
よろしくお願い致します。

connect '192.168.1.1:23'
UsernamePrompt = 'login: '
Username = 'Administrator'
PasswordPrompt = 'password: '
Password = 'password'
Prompt = 'D:\>'
ABEND = 'ERROR'
setsync 1
wait UsernamePrompt
sendln Username
wait PasswordPrompt
sendln Password
wait Prompt
flushrecv
sendln param2
timeout=0
wait Prompt ABEND
if result=1 goto ok
if result=2 goto no
:ok
setexitcode 0
goto end
:no
setexitcode 12
goto end
:end
setsync 0
sendln 'exit'
closett

チケットの履歴 (14 件中 3 件表示)

2007-04-11 13:23 更新者: maya
  • 解決法なし から 動いてるけど? に更新されました
コメント
Logged In: YES
user_id=1144

再現しませんでした。
「誤終了」時には、ok と no のどちらも通っていませんか?
2007-04-11 13:55 更新者: nuu
コメント
Logged In: YES
user_id=28345

「誤終了」時には、param2は処理途中で止まり、okを通り、呼び
出し元へ遷移します。
closettを削除した場合は、param2は最後まで実行しますが、処理
途中で呼び出し元へ遷移するところは変わりません。
2007-04-11 14:24 更新者: maya
コメント
Logged In: YES
user_id=1144

param2 ではどんなコマンドを実行していますか?

> okを通る
sendln で 1 が返ってくるということは、Prompt が返ってきて
いるように見えます。ということは teraterm が終了している訳
ではなく、param2 が終了したか、param2 の出力に 'D:\>' が
含まれていたのではないでしょうか。

2文目の「param2は最後まで実行」「処理途中」は別のことを
指していますか?
2007-04-11 16:00 更新者: nuu
コメント
Logged In: YES
user_id=28345

param2 ではPAUSEで確認後に業務プログラムを実行しています。
下記はテスト用に内容を省略したものです。
TeraTerm端末サイズは90×20で実行しています。
TEST2終了を待たずにTEST3が起動します。

○呼び出し元の内容
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST1.BAT"
if errorlevel 12 GOTO END
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST2.BAT"
if errorlevel 12 GOTO END
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST3.BAT"
if errorlevel 12 GOTO END
:END
PAUSE

○TEST1の内容
ECHO OFF
ECHO MSG *** テスト1 START ***
ECHO MSG *** テスト1 E N D ***

○TEST2の内容
ECHO OFF
ECHO MSG *** テスト2 START ***
ECHO MSG 0 *** ENTER を押してください ***
PAUSE
ECHO MSG 1
ECHO MSG 2
ECHO MSG 3
ECHO MSG 4
ECHO MSG 5
ECHO MSG 6
ECHO MSG 7
ECHO MSG 8
ECHO MSG 9
ECHO MSG 10 *** ENTER を押してください ***
PAUSE
ECHO MSG 11
ECHO MSG 12
ECHO MSG 13
ECHO MSG 14
ECHO MSG 15 *** ENTER を押してください ***
PAUSE
ECHO MSG 16
ECHO MSG 17
ECHO MSG 18
ECHO MSG 19
ECHO MSG 20
ECHO MSG *** テスト2 E N D ***
PAUSE
PAUSE
PAUSE
PAUSE
PAUSE
PAUSE

○TEST3の内容
ECHO OFF
ECHO MSG *** テスト3 START ***
ECHO MSG *** テスト3 E N D ***
2007-04-11 16:08 更新者: nuu
コメント
Logged In: YES
user_id=28345

param2 ではPAUSEで確認後に業務プログラムを実行しています。
下記はテスト用に内容を省略したものです。
TeraTerm端末サイズは90×20で実行しています。
TEST2終了を待たずにTEST3が起動します。

○呼び出し元の内容
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST1.BAT"
if errorlevel 12 GOTO END
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST2.BAT"
if errorlevel 12 GOTO END
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST3.BAT"
if errorlevel 12 GOTO END
:END
PAUSE

○TEST1の内容
ECHO OFF
ECHO MSG *** テスト1 START ***
ECHO MSG *** テスト1 E N D ***

○TEST2の内容
ECHO OFF
ECHO MSG *** テスト2 START ***
ECHO MSG 0 *** ENTER を押してください ***
PAUSE
ECHO MSG 1
ECHO MSG 2
ECHO MSG 3
ECHO MSG 4
ECHO MSG 5
ECHO MSG 6
ECHO MSG 7
ECHO MSG 8
ECHO MSG 9
ECHO MSG 10 *** ENTER を押してください ***
PAUSE
ECHO MSG 11
ECHO MSG 12
ECHO MSG 13
ECHO MSG 14
ECHO MSG 15 *** ENTER を押してください ***
PAUSE
ECHO MSG 16
ECHO MSG 17
ECHO MSG 18
ECHO MSG 19
ECHO MSG 20
ECHO MSG *** テスト2 E N D ***
PAUSE
PAUSE
PAUSE
PAUSE
PAUSE
PAUSE

○TEST3の内容
ECHO OFF
ECHO MSG *** テスト3 START ***
ECHO MSG *** テスト3 E N D ***
2007-04-11 16:08 更新者: nuu
コメント
Logged In: YES
user_id=28345

param2 ではPAUSEで確認後に業務プログラムを実行しています。
下記はテスト用に内容を省略したものです。
TeraTerm端末サイズは90×20で実行しています。
TEST2終了を待たずにTEST3が起動します。

○呼び出し元の内容
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST1.BAT"
if errorlevel 12 GOTO END
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST2.BAT"
if errorlevel 12 GOTO END
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST3.BAT"
if errorlevel 12 GOTO END
:END
PAUSE

○TEST1の内容
ECHO OFF
ECHO MSG *** テスト1 START ***
ECHO MSG *** テスト1 E N D ***

○TEST2の内容
ECHO OFF
ECHO MSG *** テスト2 START ***
ECHO MSG 0 *** ENTER を押してください ***
PAUSE
ECHO MSG 1
ECHO MSG 2
ECHO MSG 3
ECHO MSG 4
ECHO MSG 5
ECHO MSG 6
ECHO MSG 7
ECHO MSG 8
ECHO MSG 9
ECHO MSG 10 *** ENTER を押してください ***
PAUSE
ECHO MSG 11
ECHO MSG 12
ECHO MSG 13
ECHO MSG 14
ECHO MSG 15 *** ENTER を押してください ***
PAUSE
ECHO MSG 16
ECHO MSG 17
ECHO MSG 18
ECHO MSG 19
ECHO MSG 20
ECHO MSG *** テスト2 E N D ***
PAUSE
PAUSE
PAUSE
PAUSE
PAUSE
PAUSE

○TEST3の内容
ECHO OFF
ECHO MSG *** テスト3 START ***
ECHO MSG *** テスト3 E N D ***
2007-04-11 16:14 更新者: nuu
コメント
Logged In: YES
user_id=28345

param2 ではPAUSEで確認後に業務プログラムを実行しています。
下記はテスト用に内容を省略したものです。
TeraTerm端末サイズは90×20で実行しています。
TEST2終了を待たずにTEST3が起動します。

○呼び出し元の内容
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST1.BAT"
if errorlevel 12 GOTO END
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST2.BAT"
if errorlevel 12 GOTO END
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST3.BAT"
if errorlevel 12 GOTO END
:END
PAUSE

○TEST1の内容
ECHO OFF
ECHO MSG *** テスト1 START ***
ECHO MSG *** テスト1 E N D ***

○TEST2の内容
ECHO OFF
ECHO MSG *** テスト2 START ***
ECHO MSG 0 *** ENTER を押してください ***
PAUSE
ECHO MSG 1
ECHO MSG 2
ECHO MSG 3
ECHO MSG 4
ECHO MSG 5
ECHO MSG 6
ECHO MSG 7
ECHO MSG 8
ECHO MSG 9
ECHO MSG 10 *** ENTER を押してください ***
PAUSE
ECHO MSG 11
ECHO MSG 12
ECHO MSG 13
ECHO MSG 14
ECHO MSG 15 *** ENTER を押してください ***
PAUSE
ECHO MSG 16
ECHO MSG 17
ECHO MSG 18
ECHO MSG 19
ECHO MSG 20
ECHO MSG *** テスト2 E N D ***
PAUSE
PAUSE
PAUSE
PAUSE
PAUSE
PAUSE

○TEST3の内容
ECHO OFF
ECHO MSG *** テスト3 START ***
ECHO MSG *** テスト3 E N D ***
2007-04-11 16:18 更新者: nuu
コメント
Logged In: YES
user_id=28345

param2 ではPAUSEで確認後に業務プログラムを実行しています。
下記はテスト用に内容を省略したものです。
TeraTerm端末サイズは90×20で実行しています。
TEST2終了を待たずにTEST3が起動します。

○呼び出し元の内容
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST1.BAT"
if errorlevel 12 GOTO END
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST2.BAT"
if errorlevel 12 GOTO END
"C:/Program Files/teraterm/ttpmacro.exe" BATCH.TTL /I /V "D:
/tmp/TEST3.BAT"
if errorlevel 12 GOTO END
:END
PAUSE

○TEST1の内容
ECHO OFF
ECHO MSG *** テスト1 START ***
ECHO MSG *** テスト1 E N D ***

○TEST2の内容
ECHO OFF
ECHO MSG *** テスト2 START ***
ECHO MSG 0 *** ENTER を押してください ***
PAUSE
ECHO MSG 1
ECHO MSG 2
ECHO MSG 3
ECHO MSG 4
ECHO MSG 5
ECHO MSG 6
ECHO MSG 7
ECHO MSG 8
ECHO MSG 9
ECHO MSG 10 *** ENTER を押してください ***
PAUSE
ECHO MSG 11
ECHO MSG 12
ECHO MSG 13
ECHO MSG 14
ECHO MSG 15 *** ENTER を押してください ***
PAUSE
ECHO MSG 16
ECHO MSG 17
ECHO MSG 18
ECHO MSG 19
ECHO MSG 20
ECHO MSG *** テスト2 E N D ***
PAUSE
PAUSE
PAUSE
PAUSE
PAUSE
PAUSE

○TEST3の内容
ECHO OFF
ECHO MSG *** テスト3 START ***
ECHO MSG *** テスト3 E N D ***
2007-04-11 17:05 更新者: nuu
コメント
Logged In: YES
user_id=28345

すみません。連打してしまったようです。
よろしくお願いします。
2007-04-11 17:12 更新者: maya
コメント
Logged In: YES
user_id=1144

試してみましたが、当方の環境では再現しません。
このバッチ群の実行で再現していますか?
2007-04-11 17:55 更新者: nuu
コメント
Logged In: YES
user_id=28345

はい。このバッチ群の実行で再現しています。
設定が悪いのでしょうか?
下記が設定内容です。ほぼ、デフォルトのままです。

○端末の設定
・端末サイズ:90×20
・ウインドウサイズ:○
・改行コード受信:CR
・改行コード送信:CR
・端末ID:VT100
・ローカルエコー:×
・自動切換え:×
・応答:指定なし
・漢字-受信:SJIS
・漢字-送信:SJIS
・ロケール:japanese
・言語コード:932

○ウインドウの設定
・タイトル:Tera Term
・カーソルの形:四角
・タイトルバーを隠す:×
・メニューバーを隠す:×
・フルカラー:○
・スクロールバッファ:10000
・カラー:文字
・属性:NORMAL
・赤:0,緑:0,青:0
・常に標準の背景色を使う:○

○フォントの設定
・フォント:MS 明朝
・サイズ:12
・太字を有効:×

○キーボードの設定
・BACKSPACEキー:×
・DELETEキー:○
・METAキー:×

○シリアルポート設定
・ポート:COM1
・ボーレート:9600
・データ:8bit
・パリティ:none
・ストップ:1bit
・フロー制御:none
・送信遅延:0ミリ秒/字 0ミリ秒/行
2007-04-12 10:27 更新者: maya
コメント
Logged In: YES
user_id=1144

再現しませんでした。

teraterm(ttermpro.exe) が終了しているのか、それとも
batch2.bat が終了しているのかわかりますか?
teraterm が終了しているなら、closett が「リンクしていない」
というエラーを出すと思います。

また、マクロ(ttpmacro.exe) を使わずに手動で batch2.bat を
実行した場合には正常に動作しますか?
2007-04-12 12:53 更新者: nuu
コメント
Logged In: YES
user_id=28345

batch2.batのみを起動したときは正常に動作します(コマンドプロ
ンプトからとTeraTermの両方確認)。
現在は、closettをコメント化し(sendln 'exit'があるため
teratermは終了します)実行していますが
batch2.batは終了せずに、ttermpro.exeのみ終了しています。


PAUSEがコンソールの下端から2~4段目くらいにきた場合のみ、誤終
了するようなので、PAUSE前にCLSすることで、とりあえず回避するこ
とができました。
お忙しい中の対応、ありがとうございました。
2007-04-18 10:07 更新者: maya
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻2007-04-18 10:07 に更新されました

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする