バッチファイルを作っていて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