任意のパターンにそった複数ファイルをHULFTで配信したい


HULFT単体では、ファイル名パターン(C:\SEND\*csv等)で配信できません。
しかし、配信する際、WindowsのforfilesやLinuxのfor~doneでutlsendをループさせることで、 実現可能です。

Windows用 バッチファイル例

@echo off

REM --前提--
REM  [HULFT管理画面]-[システム管理(M)]-[システム動作環境設定(E)]-[集配信]
REM  -[動的パラメータ指定]が「動的変更可能」であることが前提です。
REM
REM  実運用では、エラーハンドリング可能とするよう変更をお願いします。

forfiles /P C:\SEND /M *csv /C "cmd.exe /C C:\HULFTF~1\hulft8\bin\utlsend.exe ^
-f FILEID -file @path -sync >> C:\log\log.txt 2>&1"

REM --説明--
REM  C:\SEND
REM   配信ファイルが存在するフォルダ
REM
REM  *csv
REM   配信ファイル名のパターン
REM
REM  C:\HULFTF~1\hulft8\bin\utlsend.exe
REM   ダブルクォーテーションを使用せず8.3形式でutlsend.exeのパス指定
REM
REM  ^
REM   行継続文字
REM
REM  FILEID
REM   配信管理情報ファイルID
REM
REM  @path
REM   forfilesコマンドで取得したフルパスのファイル名が代入される
REM
REM  C:\log\log.txt
REM   ログファイル名




Linux用 シェルスクリプト例

#!/bin/bash

# HULFT環境変数設定
export HULPATH=/opt/hulft/etc
export HULEXEP=/opt/hulft/bin
export PATH=$HULEXEP:$PATH

# --前提--
#  集信管理情報には、[世代管理:あり]又は[集信ファイル名に $SNDFILE
#  (配信側のファイル名を集信側に採用)]を指定します。
#
#  貴社にてスクリプトを作成する場合、utlsendの終了ステータスや
#  どのファイル配信に失敗した等を確認可能として下さるようお願い
#  いたします。

for i in $(ls -1 /SEND/*csv ); do utlsend -f FILEID -file $i -sync || \
ERR=$? ; echo $(date '+%Y/%m/%d %H:%M:%S.%N') utlsend-err=$ERR > > /log/log.txt ; done

# --説明--
#  ls -1
#   1行に1つのファイル名を表示
#
#  /SEND/*csv
#   配信したいファイル名パターン
#
#  \
#   行継続文字(コマンド例は、2行ではなく1行としてシェルに扱われる。)
#
#  FILEID
#   配信に使用する配信管理情報ファイルID
#
#  -sync
#   1回の配信が終了したら、次の配信を行うというように1回づつシリアル
#   で配信要求を行う(同時並行ではない)
#
#  /log/log.txt
#   ログファイル名








お問合せ