バッチファイルでメールを送る
ひとつのバッチファイルで、Jscriptを動かす(msdnブログ)
http://blogs.msdn.com/joshpoley/archive/2008/01/15/running-jscript-in-a-cmd-file.aspx
http://d.hatena.ne.jp/p-nix/20080116
メールを送るバッチファイル(mail.bat)だと次のような感じ。
@set @tekitou=1 /* @ECHO OFF SET @tekitou= CSCRIPT //E:JSCRIPT "%~dpnx0" %* PAUSE GOTO :eof */ if( WScript.Arguments.Count() != 3 ) { WScript.Echo("引数:送信先アドレス、タイトル、本文"); WScript.Quit(); } oMsg = new ActiveXObject("CDO.Message"); oMsg.From = "from@hoge.moge.jp"; oMsg.To = WScript.Arguments.Item(0); oMsg.Subject = WScript.Arguments.Item(1); oMsg.TextBody = WScript.Arguments.Item(2) + "\r\n" + new Date(); oMsg.Send(); WScript.Echo("メールを送信しました");
mail.bat "to@foo.bar.jp" "テスト" "メール本文です"
上部がバッチコマンドで、下部がJScriptになります。バッチコマンドをJScriptのブロックコメントで囲み、バッチファイルから自分自身を引数にJScriptを呼び出すのがミソ(コマンドプロンプトとJScriptの両方で有効な@set構文を使ってる)のようです。
@ITの記事のVBScriptをJScriptに移しただけですが問題なく動きました。VBScriptをJScriptにコンバートするサイト(IEのみ動作)を使えば、比較的簡単に書けると思います。
ちょっとトリッキーですが、人に渡したり、タスクから呼び出したりするスクリプトだと、ひとつのファイルのほうが管理しやすいことも多いので、便利かもしれません。
(参考)バッチファイルでZIPファイルを作成する例
http://scripting.cocolog-nifty.com/blog/2007/04/zip_4d41.html