任务单 #10266

マクロが切断される?
开放日期: 2007-04-10 14:39 最后更新: 2007-04-18 10:07

报告人:
属主:
(无)
类型:
状态:
关闭
组件:
(无)
里程碑:
(无)
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Works For Me
文件:
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

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

任务单历史 (3/14 Histories)

2007-04-11 13:23 Updated by: (del#1144)
  • 处理结果 Update from to Works For Me
评论
Logged In: YES
user_id=1144

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

「誤終了」時には、param2は処理途中で止まり、okを通り、呼び
出し元へ遷移します。
closettを削除した場合は、param2は最後まで実行しますが、処理
途中で呼び出し元へ遷移するところは変わりません。
2007-04-11 14:24 Updated by: (del#1144)
评论
Logged In: YES
user_id=1144

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

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

2文目の「param2は最後まで実行」「処理途中」は別のことを
指していますか?
2007-04-11 16:00 Updated by: 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 Updated by: 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 Updated by: 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 Updated by: 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 Updated by: 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 Updated by: nuu
评论
Logged In: YES
user_id=28345

すみません。連打してしまったようです。
よろしくお願いします。
2007-04-11 17:12 Updated by: (del#1144)
评论
Logged In: YES
user_id=1144

試してみましたが、当方の環境では再現しません。
このバッチ群の実行で再現していますか?
2007-04-11 17:55 Updated by: 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 Updated by: (del#1144)
评论
Logged In: YES
user_id=1144

再現しませんでした。

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

また、マクロ(ttpmacro.exe) を使わずに手動で batch2.bat を
実行した場合には正常に動作しますか?
2007-04-12 12:53 Updated by: 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 Updated by: (del#1144)
  • Ticket Close date is changed to 2007-04-18 10:07
  • 状态 Update from 开启 to 关闭

Attachment File List

No attachments

编辑

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登录名