変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

BAT

BATをCScriptとして実行するためのブートストラップ

紛れ込んで見つかりにくくなっているので再掲載。

使い方

フォルダ上のBATをクリックするダケ

効果

普通はCScriptのjsを作り、このjsファイルを起動するBATを作らないといけないけど、1ファイルで済む。

作り方

@if (1==1) /*
@ECHO off
echo パラメータ付きでこのファイルをJScriptで実行する。

%~d0
cd %~dp0

CScript //Nologo //E:JScript “%~f0” %*
REM ファイルの最後まで読み飛ばす
GOTO :EOF
rem */
@end

をjsファイルの先頭に挿入し、拡張子をBATに変える。
jsファイル部分の最初もパラメータを指定して使える様に

// 主処理の呼び出し
WScript.quit(main(WScript.arguments.length, WScript.arguments));

// 主処理
function main( argc, argv ) {
WScript.echo(“今はJScriptらしい”);
}

な形にいつもしておくといいかもしれない。
main( ) 以下は、どうでもOK。
CScriptで実行できるものは大きくはWSH(Windows Script Host)と云うものだけど、
どのようにコードするのかといえば、JScriptやVBSriptがある。
上の例は//E:JScript なのでJScriptで書かないといけないけど、//E:VBScript に変えればVBSriptで書ける。
手元にWORDかEXCELしかなく何かプログラムを書かないと困る場合は、EXCELのVBAを使うといいけど、そのVBAの入ったEXCELはそれより古いバージョンのEXCELがインストされた他のPCでは読めないことがある。※EXCELが入ってないPCも同じ。
そんな時は、BATするのだけど、かなり可読性は悪いシロモノで、ちょっとIF文をいれるだけでも、変数の遅延処理の効果で、すぐバグってしまうし、CScriptをデバックは勘に頼るしかない。
なので、

  1. EXCELのVBAのソースのmsgboxをWScript.echoに置換して済むように作る。
  2. しっかりデバッグ。
  3. エクスポートしてvbsファイルを作る。
  4. 先のブートストラップを付ける。//E:VBScript に変えておく。
  5. msgboxをWScript.echoに置換。

で、多少古いEXCELが入っているPCでも動くものが出来上がる。
また、ブラウザで動くJavaScriptも、JScriptでも動く様にコードすれば、ブラウザに載っているWEB開発ツールでデバッグして、同様にBATが作れる。
そんなことはβακα…_φ(゚∀゚ )アヒャバカバカしいと思えるかもしれない。
でもね。
えーと、EXCELのファイルに入っている会社名が古いままなんで、直して!いっぱいあるけど!
などの馬鹿馬鹿しい力作業には非常に効果が出る。
コードとデバッグに1日かかっても、直すファイルが100個もあれば、十分おつりがくる。
修正の確認も、修正前後のEXCELファイルをXML形式に出力して、WinMergeでテキストの差分でチェックすると可視化ということもあり漏れも見つけやすいし、修正漏れの再検証も楽だ。
※あ、ヘッダーはセルじゃなかったか!等
もっとも、アジャイルとかスクラムな開発技法を取れば、そもそも書類なんて無いだろうし、あっても書式がバラバラどころか中身もボロボロであっても問題は無いだろう。




top