OS識別バッチを作成する

バッチファイルを作っていてOSのビット数の判定やOSそのものの判定、バージョンの判定をバッチファイルで分岐させます。

OSのビットを判定する

バッチを作っていて、OSのビット数を判断させる際に、以下を使いましたが、Windows10 64bit OSなのに32bitとなってしまいます。


@echo off
if /i '%PROCESSOR_ARCHITECTURE%' equ 'x86' goto :A
if /i '%PROCESSOR_ARCHITECTURE%' equ 'AMD64' goto :B
goto :Z
:A
echo.
echo ========================================
echo この端末の OS のビット数は "32bit" です。
echo ========================================
echo.
goto END
:B
echo.
echo ========================================
echo この端末の OS のビット数は "64bit" です。
echo ========================================
echo.
goto END
:Z
echo.
echo =========================
echo 該当する端末はありません。
echo =========================
echo.
goto END
:END
pause
exit

cmdで個別に確認してもx86です。

echo %PROCESSOR_ARCHITECTURE%

x86

 

ビットに応じた振り分けができていないので、以下のコマンドで解消できます。

WOW64に対応している環境変数らしいのでこれなら64bitOSを識別できます。

echo %PROCESSOR_ARCHITEW6432%

AMD64

 


@echo off
if /i '%PROCESSOR_ARCHITEW6432%' equ 'AMD64' goto :A
echo.
echo ========================================
echo この端末の OS のビット数は "32bit" です。
echo ========================================
echo.
pause
exit

:A
echo.
echo ========================================
echo この端末の OS のビット数は "64bit" です。
echo ========================================
echo.
pause
exit

OSを判定する

@echo off
ver | find /i "Version 6.1." > nul
if %ERRORLEVEL% equ 0 GOTO :WIN7
ver | find /i "Version 6.3." > nul
if %ERRORLEVEL% equ 0 GOTO :WIN8.1
ver | find /i "Version 10.0." > nul
if %ERRORLEVEL% equ 0 GOTO :WIN10
goto :Z
:WIN7
echo.
echo ========================================
echo この端末の OS の種類は "Windows 7" です。
echo ========================================
echo.
goto END
:WIN8.1
echo.
echo ==========================================
echo この端末の OS の種類は "Windows 8.1" です。
echo ==========================================
echo.
goto END
:WIN10
echo.
echo =========================================
echo この端末の OS の種類は "Windows 10" です。
echo =========================================
echo.
goto END
:Z
echo.
echo ===================
echo それ以外の OS です。
echo ===================
echo.
goto END
:END
pause
exit

 

@echo off
ver | find /i "Version 6.1." > nul
if %ERRORLEVEL% equ 0 GOTO :WIN7
ver | find /i "Version 6.2." > nul
if %ERRORLEVEL% equ 0 GOTO :WIN8
ver | find /i "Version 6.3." > nul
if %ERRORLEVEL% equ 0 GOTO :WIN8.1
ver | find /i "Version 10.0." > nul
if %ERRORLEVEL% equ 0 GOTO :WIN10
goto :OTHER
:WIN7
echo.
echo この端末の OS は "Windows 7" です。
echo.
goto END
:WIN8
echo.
echo この端末の OS は "Windows 8" です。
echo.
goto END
:WIN8.1
echo.
echo この端末の OS は "Windows 8.1" です。
echo.
goto END
:WIN10
echo.
echo この端末の OS は "Windows 10" です。
echo.
goto END
:OTHER
echo.
echo それ以外の OS です。
echo.
goto END
:END
pause
exit

 

Windows10のバージョンで判定する

@echo off
ver | find /i "19041." > nul
if %ERRORLEVEL% equ 0 GOTO :win2004
ver | find /i "18363." > nul
if %ERRORLEVEL% equ 0 GOTO :win1909
ver | find /i "18362." > nul
if %ERRORLEVEL% equ 0 GOTO :win1903
ver | find /i "17763." > nul
if %ERRORLEVEL% equ 0 GOTO :win1809
ver | find /i "17134." > nul
if %ERRORLEVEL% equ 0 GOTO :win1803
ver | find /i "16299." > nul
if %ERRORLEVEL% equ 0 GOTO :win1709
goto :OTHER
:win2004
echo.
echo この端末の OS は "Windows 10 Version2004" です。
echo.
echo サポート期間
echo.
echo Professionalは 2021.12.14 です
echo.
echo Enterprise は 2021.12.14 です
echo.
goto END
:win1909
echo.
echo この端末の OS は "Windows 10 Version1909" です。
echo.
echo サポート期間
echo.
echo Professionalは 2021.5.11 です
echo.
echo Enterprise は 2022.5.10 です
echo.
goto END
:win1903
echo.
echo この端末の OS は "Windows 10 Version1903" です。
echo.
echo サポート期間
echo.
echo Professionalは 2020.12.8 です
echo.
echo Enterprise は 2020.12.8 です
echo.
goto END
:win1809
echo.
echo この端末の OS は "Windows 10 Version1809" です。
echo.
echo サポート期間
echo.
echo Professionalは 2020.11.10 です
echo.
echo Enterprise は 2021.5.11 です
echo.
goto END
:win1803
echo.
echo この端末の OS は "Windows 10 Version1803" です。
echo.
echo サポート期間
echo.
echo Professionalは サポート切れ です
echo.
echo Enterprise は 2020.11.10 です
echo.
goto END
:win1709
echo.
echo この端末の OS は "Windows 10 Version1709" です。
echo.
echo サポート期間
echo.
echo Professionalは サポート切れ です
echo.
echo Enterprise は 2020.10.13 です
echo.
goto END
:OTHER
echo.
echo それ以外の OS です。
echo.
goto END
:END
pause
exit

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です