Windows バッチファイルに JScript を混ぜ込む他のやり方
以前、Windows バッチファイルに JScript を混ぜ込んで、両方を起動させるやり方を紹介した。
今回、以下のページで別のやり方を発見したので紹介。
- 参考 : 管理者権限がなかったらUAC昇格してから実行するバッチファイル(引数指定可能) - Qiita
- 参考 : WindowsXP標準機能だけでスリープ(コマンド)の実装 | trash-area.com
@set @temp=0/*
@echo off
cscript.exe //e:jscript //nologo "%~f0" %1
goto :eof
*/
WScript.Sleep(WScript.Arguments(0)*1000);
どうも、JScript にある @set
ステートメントというものを上手く利用しているらしい。
- 参考 : @set ステートメント
@set @varname = term
こういうステートメントなので、それを1行目に書いてやる、と。そしてその1行目自体は、Windows バッチファイルとしてはコマンド文字列を出力しない @set
コマンドとして見なされる、というワケだ。
その中身は適当に 0
などと値を与えつつ、後ろをブロックコメントの開始にしておくことで、JScript では解釈されず、Windows バッチだと2行目から Exit
するまでをバッチファイルと認識する、という寸法だ。
@set @dummy=0/*
ココに Windows バッチのコード (JScript にとってはコメントアウト)
Exit (もしくは GoTo :EOF で終了する)
*/
ココに WSH JScript コード
最近とんと書かなくなった Windows バッチと WSH だが、まだまだ面白いと感じられている。