例によって、実際に使って見るのが一番だと思うので・・・
今回は、jminの使い方のページでこさえた日付書き入れ外変の改造を、
実況生中継(^^;;しようかとおもってます。
(自分もこれで実際に外変をいじるのは始めて・・だったりする・・(^^;;)
まずは・・・メニュー(がめらね)で、日付外変を右クリックでGE起動!!
ををぉっと、いきなり、前のページまでと画面が違うぞぉー
って、その後追加した物を説明しとくね・・
・ 空行の削除のボタンを追加した。
・ bat面で REM { の行から REM } の行の間の行頭に
REM % を付加するボタンを追加した
・ REM % で始まる行の REM % を取るボタンを追加した。
・ REM { REM } を削除するボタンを追加した。
なお、このボタンは、あらかじめ選択された部分(反転表示された部分)が
ある場合には、その前後にREM { REM } を付加する。
・ iniファイルに・・・
[Window]
CopyTo=c:\gaihen
AddPath=c:\jww;c:\jwcexe
としておくと、スクリプトファイルを探す際に、AWKPATH以外に、AddPathで書いて おいた
ディレクトリも探すことにした。(vbsなどのスクリプトをまとめるため)
・ 同上
メインスタンドに「纏めてコピー」「コピーdir」のボタンを追加した
纏めてコピーは、バッチとスクリプトのセーブされているものを、
CopyTo で指定されたディレクトリに、バッチファイルと同名のサブディレクトリ をこさえて、 そこにコピーする。
コピーDIRボタンは、CopyTo で指定されたディレクトリをエクスプローラで開 く、
・バッチ面に #hmメニューJump のボタンを3つ追加した。
3つは、 メニュー Jw Bat となっており・・・
例えば・・・バッチ中の ここ のところにキャレットがある場合・・・goto do%1
REM #hm なんたら| | ここ | |・・・で、jwボタンを押すと
REM #:2
へ 移動し
bat ボタンを押すと・・
:do2
へ 移動するといった具合に動作する。
逆に
:do2 にキャレットがある時にメニュをおせば、ここ のところにいどうする。
また、jw bat は右クリックでポップメニューがでて、1から9を直接選択できる。
・バッチ中の他の外部変形のバッチを選択(反転表示)しておいて、loadbat のボタンを押すと、そのバッチファイルを読み込む。
って、事なんだけど・・・・説明が簡単すぎて、よくわからんわなぁ・・・(^^;;
ひとつだけ実験!!
まず、8行目の適当なところにマウスを持っていって、左クリックすると、アンダーラインが8行目に付きます。
その状態で、BATコマンドのボタンを右クリックすると、bat用ベンチになるので、そのままホィールでnotepad jwc_temp.txt にして右クリック。
(あるいは、ベンチのnotepad jwc_temp.txt をWクリック)すると、8行目にnotepad jwc_temp.txtがはいります。
で、行番号のところへマウスを持っていき、9から下に12までドラッグすると・・・・
こんな風に・・・ここで、{付加/削除 のボタン > REM{REM化 のボタンを押せば・・・
となり、先ほど指定した範囲をREM化できます。
REM{復活 > {付加削除 ボタンで戻して・・・8行目を削除 (行番号8をクリック DEL が速いかな・・)
で、空行削除ボタンを押したら・・・作業をはじめましょう。
ここで、考えたいのは・・・昨日の日付や明日の日付、もっと言えば・・指定の日付でも書けたら便利っしょ・・ってこと。
それには、#kを使うのが、筋ってもんだで・・(^^;;
じゃば何を言ってるの?と思った方は、参考ボタンを押して、Jww_smpl.bat を読んでおくように(^^;;;
7行目をクリックして・・JWコマンドから#k *|*|/_*を選ぶと・・・
入力窓が出てきます。ここは、#k *|*|/_* の最初の*の部分・・・つまり選択肢のタイトルになる部分なので、
’日付の選択’とでもしておきましょう。(これは画面上に出なかったかも知れませんが・・・覚書のつもりで・・・(^^;)
enterを押して決定すると、次の入力窓が出てきます。
ここは選択肢となる部分なので・・・’今日’とかにしておきましょうか・・・次はコマンドラインオプションの指定となるので・・・
ここでは・・・'D'(半角でね。)とかにしておきましょう。
外変のコマンドラインオプションに付いてすこし解説しよう。 ・・・(^^; わかってる人は飛ばしてね。
何度も書いたと思うけど、外変のバッチは、最初にJWWがJWWに対する指示として読み込まれて・・
その指示に従ったJW_tenp.texをJWWがこさえて、その後JWWからバッチファイルとして実行されます。
その実行の際に、#hm で指示があった場合・・・・例えば・・・
REM #hm 日付の選択|今日|明日|指定日|
とあれば、外変を実行した際に 今日・明日・指定日 の選択肢がでて・・ここで、今日を選択したとすれば・・
JWWはバッチの実行の際に、 today.bat 1 というDOSのコマンドを発行するわけです。
もし、そのあとのバッチファイル中に・・・REM #k 日付の選択|今日|明日|指定日|/_D とかあれば・・・
today.bat 1 D1 というふうに実行されます。
このとき、バッチ中では today.bat を %0 1を %1 D1を %2 で参照することができます。
ですから、#hmを使うバッチでは・・・goto do%1 とかやって(doは他の名前で勿論オッケー)
:do1 とかに飛ばすわけです。またここで指定された D1 は
mawk32 -f todayst.awk jwc_temp.txt %2 > temp.txt
の%2の形を経由してAWKファイルに渡される・・・ということです。
だけどぉ・・・もし#hmがなかったら・・・today.bat D1 というコマンドとなり、
D1は%2でなく、%1に格納されるわけですよ。
こういう仕組みを理解しておけば・・・単独で作っておいた外変を#hmでいくつかまとめたり、
逆に、#hm での分岐から単独の外変へ分離したい時などに、訂正しなくてはならない場所が
理解できると思います。
余談ですが、#hm・・/_D を #hm・・/_/D や #hm・・/_-D とすると、
today.bat 1 /D1 や today.bat 1 -D1 のように、コマンドが実行され、
よりコマンドラインオプションらしい形式となるのですが、ジャバはhmが1は/1でもー1でもない1で書き出されるので、
こっちも D1 でいいかぁ・・・って感じで/もーもつけないでいますが、たいした意味はありません。
ん?選択肢は2つ以上あるから選択肢じゃん、最初から2つ入れられるようにしてよ!!
ぬぬ・・・・・あっしもそうおもいます。(^^;;;
そう思ったあなたは、txteditのボタンを押してみてください。
このボタンはGEが読み込むファイルをnotepadで開きます。
その中から・・・cfjw.txtの下のほうに、(他のファイルは閉じてもかまいません)
#k *|*|/_*
実行時の起動オプションの指定。1・2の選択肢が画面内左右のマウスクリックで選択できる。
とあるところを、
#k *|*|*|/_*
実行時の起動オプションの指定。1・2の選択肢が画面内左右のマウスクリックで選択できる。
のように書き換え、上書き保存しておきます。(最初のスペースの後ろの*を消してもいいでしょう。)
このファイルはGE起動時に読み込まれますので、次回GE起動時から有効になります。
まあ、次回起動時を楽しみに(^^;;;作業を続けましょう。
REM #k 日付の選択|今日|昨日|明日|指定日|/_D
のようにでも、直しておきましょう。
となみに、 #k は 項目の1を作図域内での左クリック、2を右クリックで選択できるオプションです。
mawk32 -f todayst.awk jwc_temp.txt > temp.txt も・・・
mawk32 -f todayst.awk jwc_temp.txt %1> temp.txt のように訂正しておきます。
ここで、スクリプトボタンを押すと・・・・
そうそう、割とありそうな事に、AWK処理系の変更ってのが、ありますね。
AWKを使った外部変形をはじめて・・パスの指定も直したし・・・AWKPATHも設定したのに動かない・・・
そんな時に意外と落とし穴になってるのかも・・・
AWKと一言に言ってもいくつかの言語が出回っているからねぇ・・・
あっしは、基本的にmawk32って言うのを使っているんですが・・
gawk32とかのほうが使用者は多いんじゃないかなぁ・・
厳密には違うんだと思うので、どちらかでしか動かないスクリプトもありえるんだと思うんだけど・・・
置換の練習のつもりで・・・
Sarchボタンの下の欄にmawk32と記入するか、あるいは、文中のmawk32をドラッグで図のように反転しておいて、
Exボタンを押します。
すると、ローズの置換するボタンと、入力枠が出てくるので、入力枠にこの場合、gawk32と入力。
(jgawkに変更するなら、勿論jgawkと入力してね。)
ALLをクリックすると、ALLおぷしょんが指定されるので、その後置換するボタンを押せば、文中の全てのmawk32をgawk32に置換できます。
置換入力欄等はSarchボタンを押せば、きえます。
で、スクリプトボタンを押すと・・・のところまで戻って・・・(^^;