tohokuaikiのチラシの裏

技術的ネタとか。

高度なバッチファイルを書いてみる

Windowsシェルスクリプトといえば、.batのついたバッチファイル。

だけど、ちょっと高度なことがやりたい場合・・・ちょっとと言っても、ファイル名を変名してコピーとかそのレベルだけど・・・バッチコマンドだけだとどーにもこーにも。

ということで、Windowsに元からあるスクリプトといえば、VBSCriptJSCRIPT。この二つを呼び出して複雑なことをやってみる。当然Web屋が使うならJSCRIPT

といっても使い方は簡単

バッチファイル→JSCRIPTファイル
とする。
こうしなくても、JSCRIPTファイルを直接実行でいいんじゃないかと思うけど、2点違う。

  • document.writeしたときに直接実行だとAlertダイアログが出る
  • .jsファイルが別のプログラム起動に関連付けられてても動く・・・んじゃないかな?
  • .jsファイルを実行してとか「なにそれ?」って思う人が居るかもしれない。.batなら「はいはい」って感じ。

.jsの関連付けを変えてる人は結構居るかもしれない。すると、.jsをダブルクリックしたときに動いてくれない可能性がある。だけど、.batを変えてる人はまぁ居ないんじゃないかということで。テストはしてないので不明。

バッチファイル

JSCRIPTをコールする一行だけ

cscript from_bat.js

JSCRIPT

これは普通にJavaScripterなら問題ない。
メインはActiveXObjectの扱いですね。
ActiveXObject オブジェクト

個人的にはこのページ
ファイル操作
を大変参考にしました。

エンコードしておく

なんか他人に「うわっ、何このコード?ショボ!!」って言われないようにしておく。

MicroSoftWindows Script Encoderがあるので、エンコードしておく。

エンコード方法

そのままインストールすると、C:\Program Files\Windows Script Encoderとかに配置されるので、面倒でなければPATHを通しておく。

で、cmdから

> screnc.exe ファイル名.js  ファイル名.jse

ってやる。拡張子jseはエンコード済みJSCRIPTとしてWindowsのデフォルトらしく、この拡張子だとbatのcscriptで起動したときにきちんと認識してくれる。

バッチファイルの方も

cscript from_bat.jse

ってやってね。.jseの関連付けまで変えられてたら動くのかな?