• WSHで CUI実行かどうか判断する

    ちょっとしたスクリプトにおいて、WScript.Echoなどで結果をstdoutにずらずら出力したいときがある。
    で、このスクリプトをエクスプローラからダブルクリックで実行してしまいMsgBoxが延々と出てきてしまうと悲しい。ので、実行時にチェックしてコマンドプロンプト(cscript.exe)から実行されたかどうか判断したい。

    改めて検索してみたら、
    @IT:運用 Windows管理者のためのWindows Script Host入門 第4回 WScriptオブジェクトの詳細(2) 4.スクリプトの実行制御とホスト情報の取得
    実行ファイル名でチェックしてるサンプルが。

    今までこんなん↓してた(JScript)

    try {
    WScript.StdErr.WriteBlankLines(1);
    } catch( ex ) {
    WScript.echo( "run me under cscript.exe");
    WScript.Quit();
    }
    うーん。
    cscript.exe経由で実行の場合に、StdErrが汚れるし。。


  • VBS+ADOでMDBアクセス

    Set connection = CreateObject( "ADODB.Connection" )
    connection_string = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=MDBファイル;"
    connection.Open connection_string

    Set rs = CreateObject( "ADODB.Recordset" )
    Set rs.ActiveConnection = connection

    sql = "SELECT ServerName , Community , Status FROM SERVER_LIST "

    rs.Open( sql )

    While rs.EOF <> true

    s = rs.Fields("ServerName").Value & " " & rs.Fields("Community").Value & " " & rs.Fields("Status").Value

    WScript.Echo s

    rs.MoveNext()
    Wend

    rs.close
    connection.close

    >cscript //nologo ado.vbs
    host1 public OK
    host2 aaa BAD
    >
  • WSHでレジストリの読み書き

    • [WSH]コマンドライン引数、オプション解釈
    • [WSH]レジストリの読み書き
    • [WSH]ディレクトリの有無チェック
    • [WSH]ディレクトリ内ファイル列挙
    • [WSH]パスから拡張子部分を抜き出す
    • [WSH]イベントログ出力
    • [JavaScript]乱数
    サンプル。
    どこかに保存しスタートアップにショートカットを作成するなどする。実行するたびに指定ディレクトリ内のビットマップファイルをランダムに選択し、デスクトップまたはログオンスクリーンの壁紙を変更する。

    デフォルトの動作は、"「共有ピクチャ\randomwp\」内の*.bmpからランダムに選択しログオンスクリーンの壁紙を変更する"