トップ 履歴 一覧 カテゴリ ソース 検索 ヘルプ RSS ログイン

WinBat/OsCheck

INDEX

バッチでOSを判定する方法(XP以前まで、それ以降は未調査)

9x系かNT系かを判断する

ざっくりと9x系かNT系かを判断します。MS-DOSでの場合も9x系と判断されます。NT系の場合、環境変数"OS"には、"Windows_NT"が定義されています。しかし、9x系の場合は環境変数の定義がされていません。これで判断します。

 :
REM OS判定 9x系かNT系か
IF "%OS%" == "Windows_NT" GOTO OSisWinNT
GOTO OSisWin9x

REM Windows 9x系
:OSisWin9x
ECHO Windows 9x系のDOSプロンプトです。
GOTO EOF

REM Windows NT系
:OSisWinNT
ECHO Windows NT系のコマンドプロンプトです。
GOTO EOF

:EOF

9x系かNT系かを判断する(NT系のみで実行させる)

MS-DOSおよび9x系では、バッチファイルの拡張子は“bat”のみ。NT系では、“bat”の他に“cmd”が使える。NT系の環境のみで実行させた場合は、バッチファイルの拡張子を“cmd”とすることで実行環境を限定できる。

詳細なOS判定

VER と FIND コマンドを使用し、OSを判断します。

 :
REM MS-DOS Version 6.2
VER | FIND "MS-DOS" > NUL 2>&1
IF NOT ERRORLEVEL 1 GOTO OSisMsDos

REM Windows 95
VER | FIND "95" > NUL 2>&1
IF NOT ERRORLEVEL 1 GOTO OSisWin95

REM Windows 98 [Version 4.10.2222]
VER | FIND "NT" > NUL 2>&1
IF NOT ERRORLEVEL 1 GOTO OSisWin98

REM Windows Millennium [Version 4.90.3000]
VER | FIND "Millennium" > NUL 2>&1
IF NOT ERRORLEVEL 1 GOTO OSisWinMe

REM Windows NT Version 4.0
VER | FIND "NT" > NUL 2>&1
IF NOT ERRORLEVEL 1 GOTO OSisWinNT

REM Microsoft Windows 2000 [Version 5.00.2195]
VER | FIND "2000" > NUL 2>&1
IF NOT ERRORLEVEL 1 GOTO OSisWin2K

REM Microsoft Windows XP [Version 5.1.2600]
VER | FIND "XP" > NUL 2>&1
IF NOT ERRORLEVEL 1 GOTO OSisWinXP

REM Microsoft Windows [Version 5.2.3790]
VER | FIND "5.2." > NUL 2>&1
IF NOT ERRORLEVEL 1 GOTO OSisWinSv

GOTO OSisUnknown
 :

MS-DOS用も書いてみましたが、FINDが使えない可能性あり

詳細なOS判定(おまけ)

バージョンを表示する VER コマンドの出力結果によってOSを判断します。

IF文を使用せずにシンプルですが、ワークファイルを作成します。また、Windows Server 2003は判断できません。

 :
REM OS判定
ECHO SET OSVER=MS-DOS>MsDos.bat
ECHO SET OSVER=%%1>Windows.bat
ECHO SET OSVER=%%2>Microsoft.bat
VER>VERCHECK.BAT
CALL VERCHECK.BAT
DEL MsDos.bat
DEL Windows.bat
DEL Microsoft.bat
REM 判定結果は環境変数"OSVER"に入ります。
REM セッとされる値は、MS-DOS / 95 / 98 / Millennium / NT / 2000 / XP
ECHO OSは%OSVER%です。
 :

でも、結局IF文で判定し直すんですよね(^^;

最終更新時間:2013年08月07日 10時01分15秒 指摘や意見などあればSandBoxのBBSへ。