Designer:「外部アプリの実行」の定番設定方法

前回記事の続きで、「外部アプリの実行」の定番設定方法についてです。

Designer+Windows:batファイルの実行 https://xoblos.hatenablog.jp/entry/2019/03/03/163827

下図のようなフォルダ構成で解説します。業務定義ファイル(.xbt または .xob)を起点にして、[CTL]、[INPUT]、[OUTPUT] の3個のサブフォルダが配置されています。

f:id:xoblos:20211226140924p:plain

[INPUT] フォルダには、次のような12か月分の月名の入った year.txt があります。

year.txt

01	1月	January	Jan
02	2月	February	Feb
03	3月	March	Mar
04	4月	April	Apr
05	5月	May	May
06	6月	June	Jun
07	7月	July	Jul
08	8月	August	Aug
09	9月	September	Sep
10	10月	October	Oct
11	11月	November	Nov
12	12月	December	Dec

実行する例は、Windows コマンドの findstr を使用して、year.txt から12月(December)の情報を検索して、[OUTPUT] フォルダの output.txt に出力することです。

f:id:xoblos:20211226140934p:plain

上図のように、「外部アプリの実行」設定画面から設定してみます。定番設定方法をおさらいすると、次のようになります。

[a.関連付けられたアプリケーションで実行しますか?]

いいえ

[b.実行するファイル(必須)]

%ComSpec%

[c.コマンドライン引数]

batファイルをコマンドプロンプトで実行するときのコマンドラインと引数を、/c オプション付きで指定します。 例: /c CTL\TestRun.bat や  /c CTL\another.bat 100 200 ”3番目の引数”

2.動作の設定 [a.作業フォルダ]
.
※通常、xbt(または xob)ファイルのあるカレントフォルダ「.」を指定します。


[CTL] フォルダに、メモ帳などで編集した TestRun.bat を置いてデザイナから実行すると、batファイルが次の内容だとエラーになります。

TestRun.bat

findstr 12 year.txt > output.txt

エラーメッセージを見るためには、下図のように標準エラー出力を書き込むファイル」を指定して実行します。

f:id:xoblos:20211226144823p:plain

この実行例だと、[CTL] フォルダの下の err.txtWindowsのエラーメッセージが出力されます。

FINDSTR: 開くことができません (year.txt)

フォルダの位置指定が誤っていたので、次のように TestRun.bat を修正して実行してみます。

findstr 12 INPUT\year.txt > OUTPUT\output.txt

[a.作業フォルダ] の設定が、業務定義ファイルのあるカレントフォルダ(.)になっているので、そこを起点にした相対指定が必要でした。これで実行はうまくいきますので、[OUTPUT] フォルダの下に output.txt が出力されます。

output.txt

12	12月	December	Dec

2021年も、もうすぐ最後。皆様、今年も一年お疲れさまでした。

(おまけ)フォルダ指定をブラックボックスにしないため

上述の設定例でもいいのですが、[INPUT] や [OUTPUT] のフォルダ指定をbatファイルに記述せず、デザイナ設定画面から指定して引数で渡すようにすると、batファイルのブラックボックス化を防げます。

f:id:xoblos:20211226152126p:plain

TestRun.bat

findstr 12 %1 > %2

ここまでできたら、検索する "12" という文字列も引数にして渡して、ツール化(ユーティリティ化)したいですね。解法は載せませんので、皆様も是非トライしてみてください。