回答:
もう少し簡単な方法は、%ProgramFiles(x86)%ディレクトリの存在を確認することです。存在する場合は64ビットを実行しており、存在しない場合は32ビットを実行しています。
クイックワンライナー:
if exist "%ProgramFiles(x86)%" echo 64-bit
64-bit
ディレクトリが存在する場合に出力されます。ただし、変数として存在せず、ディレクトリとして(%ProgramFiles(x86)%として)存在する場合は失敗します。
また、検索ツールを使用して、ビット数を判断するより正確な方法を使用することもできます。
set | find "ProgramFiles(x86)"
またはsysteminfo
以前にコマンドを使用して
systeminfo | find /I "System type"
(/I
XP / 2003/2008 / etcで動作するように含まれています)
どうですか:
echo %PROCESSOR_ARCHITECTURE%
これは、返されたx86 32ビットシステム上AMD64(またはIA64 64ビットシステムの場合)。
Program Files (x86)
です。環境変数の存在を確認することもでき%PROGRAMFILES(X86)%
ます(存在しない場合は、x86マシンを使用しています)。
systeminfo | find /I "System type"
これはロケールに依存し、 低速です。
echo %PROCESSOR_ARCHITECTURE%
それが 32ビット x86でcmd.exe
。
正しい方法:
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
PROCESSOR_ARCHITEW6432
WMIクエリで確認する他の方法:
パワーシェル:
(gwmi win32_computersystem).SystemType
CMD:
wmic OS get OSArchitecture
ここから抽出:http : //www.sysadmit.com/2015/10/windows-como-saber-si-es-de-32-o-64-bits.html
Windowsでプロセッサアーキテクチャを確認する方法は多数あります。
少なくともWindows 2000以降でプロセッサアーキテクチャをチェックする、最も速く、最も簡単で、最も互換性のある方法は、PROCESSOR_ARCHITECTURE
環境変数を調べることです。
echo %PROCESSOR_ARCHITECTURE%
ただし、コマンドプロンプトを開く方法に応じて、異なる結果が得られる場合があります。WoW64による「予期しない結果」を避けるために、レジストリから直接読み取ることができます(Microsoft はキーに2つ以上のタイプミスを作成しました)。
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE
Microsoftは、レジストリからハードウェアインフォメーションストアを読み取ることも推奨しています。
reg query "HKLM\Hardware\Description\System\CentralProcessor\0" /v Identifier
また、Program Files
ディレクトリのx86バージョン(またはそれを指す環境変数)の存在を確認することもできます。これは、ディレクトリが64ビットシステム上にのみ存在するためです。PROCESSOR_ARCHITECTURE
変数とは異なり、これは、プロンプトの開き方に関係なく、ディレクトリが存在する(または存在しない)ため、コマンドプロンプトの実行方法に依存しません。
::via env-var
if not defined ProgramFiles(x86) echo 32-bit
::via file-system
if not exist "%systemdrive%\Program Files (x86)" echo 32-bit
これらの方法は、単一のバッチファイル(例:)で組み合わせることができ、cpuinfo.bat
他のプログラムやフレームワークを実行する必要なしに、標準のWindows NTコマンドプロンプトからシステムを非常に高速にチェックできます。
これは32ビットおよびIntel 64ビットシステムでテストされ(AMD64でテストしてください)、1秒未満で正しい結果が得られました。
@echo off
echo PROCESSOR_ARCHITECTURE var:
echo %PROCESSOR_ARCHITECTURE% | find /i "x86" > nul
if %errorlevel%==0 (
echo 32-bit
) else (
echo 64-bit
)
echo.
echo PROCESSOR_ARCHITECTURE reg:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE | find /i "x86" > nul
if %errorlevel%==0 (
echo 32-bit
) else (
echo 64-bit
)
echo.
echo CentralProcessor reg:
reg query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > nul
if %errorlevel%==0 (
echo 32-bit
) else (
echo 64-bit
)
echo.
echo ProgramFiles(x86) var:
if not defined ProgramFiles(x86) (
echo 32-bit
) else (
echo 64-bit
)
echo.
echo ProgramFiles(x86) dir:
if not exist "%systemdrive%\Program Files (x86)" (
echo 32-bit
) else (
echo 64-bit
)
echo.
これは理想的な答えではなく、systeminfo.exe
システムタイプ(32ビットまたは64ビット)を決定するための望ましい方法ですがsysteminfo.exe
、作業の完了を待たない場合、このソリューションは少し速く実行されます。
コマンド:
reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | find "BuildLabEx"
レジストリクエリと検索文字列に正しい変更を加えることで、Windows 95までのオペレーティングシステムのバージョンを確認することもできます。systeminfo.exe
より正確で正しいクエリ方法は、reg.exe query
より高速で後方互換性があります。
reg query "HKLM\[..as before..]\Version" /v BuildLabEx
方法1:
(持つ2つのステップの検証PROCESSOR_ARCHITECTURE
とPROCESSOR_ARCHITEW6432
)
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
if %Arch% == "x64" (
msg * "yessss"
) else (
msg * "noooo"
)
方法2:
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x32" > NUL && set OS=32BIT || set OS=64BIT
if %OS%==32BIT echo "YESSS"
if %OS%==64BIT echo "NOOO"
systeminfo | find "System type"
Capitol Tは何も返さないはずです。