ChgFldを業務で使っている方が多いからでしょうか、Excelなどの持つマクロ機能のようなものを希望される方が多いのです。業務では同じ操作を繰り返す定型処理が一般的だからなのでしょう。 定番中の定番とも言えるエディターの「秀丸」などのように、マクロ・プログラミングとも言える独自の世界を築いているソフトもありますが、そのような機能を追加するのは一筋縄では行きません。(能力のほうが追いつかないということの言い訳かも。) そのような時に、各種ソフトの操作を、DOSのバッチファイルのようなイメージで記述して定型処理させるソフトに着目しました。清水 洋平さんの作られたオンライン・ソフト「WinBatchEh」です。ChgFld内部にマクロ機能を組み込むより、汎用性がある分
ChgFld がいっそう便利に使えます。
そこで、ChgFldに、この「WinBatchEh」用のコマンド・ファイルを出力する機能を追加しました。「WinBatchEh」は、DOSのバッチファイルのコマンドを拡張しWindows上で使用できるようにしたものです。ChgFldで行った一連の操作を、このコマンドファイルとして出力し、そのファイルを「WinBatchEh」で読み込んで実行すれば、先にChgFldで行った一連の操作を再現することができます。
清水 洋平さんの作られたオンライン・ソフト「WinBatchEh」が、非常に便利です。このソフトは、DOSのバッチファイルのコマンドを拡張しWindows上で使用できるようにしたものです。詳細な説明は省略しますが、「タイトルが
***** のWindowが表示されるまで待って、メニューの
????? 実行」というようなことが簡単にできてしまいます。
| サンプル-その1(出来はあまり良くないです) |
ChgFldを使って、CSVファイルを固定長レコードファイルに変換するバッチです。ドライブ、ディレクトリなどが私の実行環境に依存していますので、汎用ではありませんので、そのつもりで読んでください。
REM 読み込むファイルを指定して chgfld.exe を起動する。 START=2 "c:\chgfld\chgfld.exe" "c:\chgfld\相手先.txt"
REM ちょっと待つ(1秒は適当に) SLEEPTIME 1 REM メニューにアクセスキーを送る
SENDMENUKEY "ChgFld" 'M' 'F' '2' REM タイトルが"形式:固定長ファイル:CSVから固定長"のWindowが現れるのを待つ
SLEEPTIME NOT EXISTWINDOW "形式:固定長ファイル:CSVから固定長" REM chgfldのオプション・設定幅の読み込みのため REM メニューにアクセスキーを送る
SENDMENUKEY "形式:固定長ファイル:CSVから固定長" 'O' 'I' REM タイトルが"開く"のWindowが現れるのを待つ
SLEEPTIME NOT EXISTWINDOW "開く" REM
クリップボードに設定幅を記録したファイル名をセット SETCLIPBOARD "c:\chgfld\Haba_Csv2Fixed.txt"
REM ファイル名を貼り付ける KEYBDEVENT ^'V' REM 「開く」のボタンにアクセスキーを送る
KEYBDEVENT &'O' REM ちょっと待つ
SLEEPTIME 1 REM メニューにアクセスキーを送る(設定完了)
SENDMENUKEY "形式:固定長ファイル:CSVから固定長" 'V' 'D' REM メニューにアクセスキーを送る(変換実行)
SENDMENUKEY "形式:固定長ファイル:CSVから固定長" 'T' 'R' REM タイトルが"変換終了"のWindowが現れるのを待つ
SLEEPTIME NOT EXISTWINDOW "変換終了" REM リターンキーを押す
KEYBDEVENT VK_RETURN REM ChgFldのメニューにアクセスキーを送る(終了)
SENDMENUKEY "ChgFld" 'F' 'X' REM タイトルが"確認"のWindowが現れるのを待つ
SLEEPTIME NOT EXISTWINDOW "確認" REM アクセスキーを送る
KEYBDEVENT &'Y' REM タイトルが"名前を付けて保存"のWindowが現れるのを待つ
SLEEPTIME NOT EXISTWINDOW "名前を付けて保存" REM クリップボードに保存するファイル名をセット
SETCLIPBOARD "c:\chgfld\相手先Fixed.txt"
REM ファイル名を貼り付ける KEYBDEVENT ^'V' REM アクセスキーを送る(保存)
KEYBDEVENT &'S' REM ちょっと待つ
SLEEPTIME 1 REM タイトルが"名前を付けて保存"が現れなかったら、ラベルDEGUTIへ
IF NOT EXISTWINDOW "名前を付けて保存" GOTO DEGUTI REM タイトルが"名前を付けて保存"のWindowにアクセスキーを送る
KEYBDEVENT &'Y' REM ラベル(出口) :DEGUTI
このWinBatchEhを使えば、DOS
のバッチファイルのような簡単なプログラミングで、Windows上のバッチ処理が手軽に実現できてしまいます。 DOS と同じバッチコマンドだけでなく、構造化された IF や FOR
文、 WHILE によるループ、GOSUB によるサブルーチンの呼び出し、PRINTF
による書式に従った出力なども可能です。さらにWindows用に拡張されたバッチコマンドを使用すれば、メッセージボックスの表示、ダイアログによるファイル名選択、ボタン選択、メニューによる分岐などが簡単に操作できます。 これらのバッチコマンドと既存のソフトを組み合わせて新しい自分だけの
Windows プログラムを作成することができます。
清水 洋平さんのホームページは、次のとおりで、「WinBatchEh」
もこのサイトからダウンロードできます。
http://www.vector.co.jp/authors/VA000007/
|