Hulftのutlsendコマンドでファイル送信バッチをつくる

IT
スポンサーリンク

ファイル転送ソフトHulftを使用して、ファイルを配信するバッチを作ってみました。
タスクスケジューラやJP1などに登録したい方は、参考にしていただければと思います。

ポイントは以下の2点です。

  • 配信コマンドはutlsendコマンドを使う。
  • -syncは必ずつける。

ホスト名とファイルIDとポート番号を指定して実行するバッチ

配信コマンドは、utlsendコマンドで行い、事前にHulftを配信する先のホスト名をutlalivecheckコマンドで実行しています。配信先の事前チェックを行わないのであれば、ポート番号とホスト名はいりません。


@echo off
rem ----------------------------
rem HULFT送信処理
rem 相手先のHULFT起動確認後にファイル送信
rem 正常終了(0)
rem 相手先HULFT生存確認エラー(8)
rem 異常終了(9)
rem ----------------------------


rem パラメーター(ホスト名/ファイルID/ポート番号を指定)
SET HULFTPATH="x:\HULFT Family\hulftx\bin"
SET FILEID=xxxxx
SET HOSTNAME=xxxxx
SET PORTNO=xxxxx
SET CHECK_TIMEOUT_SEC=20
SET SEND_TIMEOUT_SEC=300

rem ----------------------------

rem 相手先HULFT生存確認

%HULFTPATH%\utlalivecheck -h %HOSTNAME% -p %PORTNO% -w %CHECK_TIMEOUT_SEC%
if NOT %ERRORLEVEL%==0 (
     goto ERROR
 )
rem HULFT送信
rem -syncオプション(同期転送) 転送結果が返ってくるまで待つ

%HULFTPATH%\utlsend -f %FILEID% -sync -w %SEND_TIMEOUT_SEC%

if %ERRORLEVEL% == 0 (
echo %DATE:/=-% %TIME: =0% %~n0 正常終了
exit /B 0
) else (
echo %DATE:/=-% %TIME: =0% %~n0 HULFTエラーコード:%ERRORLEVEL%で異常終了しました。
exit /B 9
)

:ERROR
echo %DATE:/=-% %TIME: =0% %~n0 相手先HULFT生存確認でエラーになりました。
exit /B 8

戻り値

戻り値(リターンコード)は,0で正常終了。それ以外は異常終了としています。ただし、相手先のサーバー側の問題かデータ側の問題なのかを切り分けたいのでエラーを二つに分岐しています。

戻り値処理結果
0配信ファイルが正しく相手先に送信されたとき(正常終了)
8相手先のHulftサービスが正常に起動していない場合(エラー)
9その他の原因でエラーとなった場合にエラーコードを出力する。

ポイント1 -syncオプションは必ずつける。

-syncオプションは必ず入れること。-syncオプションがない場合は、コマンドが実行しただけで正常終了の値が返ってきてしまいます。正常に相手先にファイルが転送されたかが確認できていない状態です。

ポイント2 HulftのファイルIDの設定は必須

Hulft配信バッチはutlsendコマンドを実行してファイル送信を行っていますが、Hulft側でファイルIDの設定は必須の内容です。送信タイムアウトの値は必須ではないので付与しなくても良いですが、基本的にファイル転送のファイル容量が大きくない限り5分程度でタイムアウト値を付けておいたほうが無難だと思います。タイムアウトの値を設定しないと送信が完了するまで待ち状態となってしまいます。

まとめ

  • 配信コマンドはutlsendコマンドを使う。
  • -syncオプションをつけることで相手先に正しく送信されたことが保証される。
  • HulftのファイルIDの設定は必須

コメント

タイトルとURLをコピーしました