タスクスケジューラからscprecvが動作しない。
以前より、タスクスケジューラ経由で Tera Term を動かしたいという話は挙がっており、 下記の状況を見ると、一応動作させることは可能なようです。 http://logmett.com/forum/viewtopic.php?f=3&t=1732&p=6006&hilit=task+scheduler#p6006 http://logmett.com/forum/viewtopic.php?f=3&t=805&p=3008&hilit=task+scheduler#p3008
試していませんが、ttpmacro.exe も ttermpro.exe(connectマクロコマンド) も /V を付けて起動すればよいのではないでしょうか
/Vオプションで起動しても、connectやsendlnなどは実行されている事がログから確認できますが、
scprecvの所で止まってしまいます。
ローカルにファイルは作成されているので、ファイル受信処理直前で止まっているように見えます。
scprecvではなくzmodemrecvで実施した所、タスクスケジューラの
何か違いがあるのでしょうか。
is_canceled_window() の処理を見ると、「ウィンドウが表示されていない == 転送キャンセル」となっているように見えます。
[comment:1412:33954:1406217988 maya] への返信 > is_canceled_window() の処理を見ると、「ウィンドウが表示されていない == 転送キャンセル」となっているように見えます。 対処方法は以下の通り、考えてみました。 1.is_canceled_window() の実装を改修する。 2.マクロ経由でSCP実行された場合、is_canceled_window() を使わないようにする。 3.タスクスケジューラ経由でSCP実行された場合、is_canceled_window() を使わないようにする。 1.については、そもそも実装があまりよくないと思っていて、しばしば手直しているのですが、 適切な実装にすれば、本問題は回避できそうです。ただし、妙案なし。 2.は、実現できそうです。 3.は、Tera Termがタスクスケジューラ経由で実行されたことを判別できればいいのですが、 判別方法がまだ見つけられていないです。
対処を行ってみたので、再現しなくなるか確認願います。
事象が改善され、ファイルの受信が正常に行われた事が確認できました。 ありがとうございます。
サーバにconnectし、scprecvでファイルを受信するマクロをタスクスケジューラに登録し、 「ユーザがログオンしているかどうかにかかわらず実行する」をチェックして実行したところ、 ローカルフォルダにファイルは作成されるのですが、0KBのまま受信が終わりません。 「ユーザがログオンしているときのみ実行する」だと正常に動作します。
「ユーザがログオンしているかどうかにかかわらず実行する」だとバックグラウンド処理なので どこで止まっているのかが調べられません。
何か良い改善方法はないでしょうか。 teratermのバージョンは4.83です。