OSのバージョン判断をする

どこで動かすか分からないようなバッチについてはOSのバージョンごとに処理を分けておく必要があったりします。
そんな時に重宝するのがこちら!!(夜中の通販風に)
この方法はここで見つけました。

周囲にWindows NTなんてあんまりみかけないのでNTの場合の動作テストはしてません。

  C:\> type OS_Version.bat

  @ECHO OFF

  :// Windows NTの場合
  VER | FIND "NT" > NUL
  IF NOT ERRORLEVEL 1 (
      ECHO OSはWindows NTです
      GOTO LAST
  )

  :// Windows 2000の場合
  VER | FIND "2000" > NUL
  IF NOT ERRORLEVEL 1 (
      ECHO OSはWindows 2000です
      GOTO LAST
  )

  :// Windows XPの場合
  VER | FIND "XP" > NUL
  IF NOT ERRORLEVEL 1 (
      ECHO OSはWindows XPです
      GOTO LAST
  )

  :LAST
  ECHO 何かキーを押して下さい
  PAUSE > NUL

  C:\> CALL OS_Version.bat

  OSはWindows XPです
  何かキーを押して下さい

  C:\> 

これはあちこちで紹介されている方法なのですが、XPだとしてSP2なのかどうなのかを判断する方法って見かけた事がありません。いろいろと試してみた結果、一番お手軽で確実な方法はこんな感じです。

  C:\> TYPE SPCONF.bat

    @ECHO OFF
    NETSH FIREWALL SHOW CONFIG > NUL 2> NUL

    :// SP2の場合
    IF NOT ERRORLEVEL 1 (
        ECHO OSはWindows XP[SP2]です

    :// SP2未満の場合
    ) ELSE (
        ECHO OSはWindows XP[SP2未満]です
    )

  C:\> 

NETSHのFIREWALLと言うのはPFWの設定確認・変更を行う為のコマンド(オプション?)です。
(詳しくはNETSHのヘルプを読んで下さい)
これはPFWが自動起動されるようになったSP2以降でしか存在しないようです。

ちなみにSP2とそれ以外を判別して何すんの?と思うかもしれませんが、例えばSP2でしか使えないコマンドなどがあるので、事前にSPを判定しておいて実行するコマンドを変えたりなどする場合にはかなり使えます。
SP2からの機能と言えば、netstatの-bオプションとか前述のNETSHのFIREWALLオプションかな?
netstatの-bオプションは結構便利ですよ。

今日のゲーム

ただいまのプレイ時間20.5時間。 道に迷った....。同じところをグルグル迷って30分。