イネマルのプログラミング備忘録

だいたい付箋。一口サイズのメモ帳

WSH WSF をバッチに埋め込む方法(現在時刻を読み上げるバッチファイル)

ちょっとしたメモ

タイトルの通り、wsf 形式のWSHスクリプトをバッチファイルに埋め込む方法です。
wsfを使えば、VBScriptJScript を混在させたり、
HTML の scriptタグ と同じように記述できるのでGoogle APIsから jQuery 使うようにしたりできます。
バッチに埋め込むメリットは、用途次第ということで省略。

コマンド

おまじない部分は、下記の通り。

<!-- :
@echo off
%windir%\System32\cscript.exe //nologo "%~f0?.wsf" %*
%ComSpec% /c exit %errorlevel%&goto:EOF
--->

これを駆使して、現在時刻を読み上げる機能を作ると下記のようになります。

<!-- :
@echo off&title %~n0
%windir%\System32\cscript.exe //nologo "%~f0?.wsf" %*
%ComSpec% /c exit %errorlevel%&goto:EOF
--->
<!-- :

WSH WSF をバッチに埋め込む方法

サンプル:
    現在時刻を読み上げるバッチファイル

--->
<job>
<script language="VBScript">
' 現在時刻を返すだけ の関数
Function GetDateTime()
    GetDateTime = Now
End Function
</script>
<script language="JScript">
/**
 *  @brief  エントリーポイント用即時関数
 */
WSH.Quit(+function ()
{
    var sp = WSH.CreateObject("SAPI.SpVoice");
    // 現在時刻を読み上げる
    sp.Speak(GetDateTime());
    return 0;
}());
</script>
</job>

参照

埋め込む方法は、下記から。 stackoverflow.com