前回記事の続きで、「外部アプリの実行」の定番設定方法についてです。
Designer+Windows:batファイルの実行 https://xoblos.hatenablog.jp/entry/2019/03/03/163827
下図のようなフォルダ構成で解説します。業務定義ファイル(.xbt または .xob)を起点にして、[CTL]、[INPUT]、[OUTPUT] の3個のサブフォルダが配置されています。
[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 に出力することです。
上図のように、「外部アプリの実行」設定画面から設定してみます。定番設定方法をおさらいすると、次のようになります。
[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
エラーメッセージを見るためには、下図のように「標準エラー出力を書き込むファイル」を指定して実行します。
この実行例だと、[CTL] フォルダの下の err.txt にWindowsのエラーメッセージが出力されます。
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ファイルのブラックボックス化を防げます。
TestRun.bat
findstr 12 %1 > %2
ここまでできたら、検索する "12" という文字列も引数にして渡して、ツール化(ユーティリティ化)したいですね。解法は載せませんので、皆様も是非トライしてみてください。