64ビット – CLIでWindows Serverのバージョン32/64ビットを検出する

32-bit 64-bit windows windows-server-2003 windows-server-2008

Windows Server の 32 ビット版と 64 ビット版のどちらを実行しているかをコマンドラインから検出する最良かつ迅速な方法は何ですか?

Cygwinがインストールされています)

  18  romant  2009-11-10


ベストアンサー

もう少し簡単な方法は、%ProgramFiles(x86)% ディレクトリが存在するかどうかをチェックすることです。もし存在すれば64ビットを実行していることになり、存在しなければ32ビットを実行していることになります

Quick one-liner:

if exist "%ProgramFiles(x86)%" echo 64-bit

これは、ディレクトリが存在する場合には 64-bit を出力します。しかし、変数として存在していなくてもディレクトリとして存在していた場合(%ProgramFiles(x86)%として)、これは失敗します

また、検索ツールを使用することで、より正確にビットネスを判断する方法を持つことができます

set | find "ProgramFiles(x86)"

または以前に systeminfo コマンドを使用していた場合

systeminfo | find /I "System type"

(XP/2003/2008/etcで動作するように/Iを含む)

13  Joshua  2009-11-10


How about:

echo %PROCESSOR_ARCHITECTURE%

これは、32ビットシステムではx86、64ビットシステムではAMD64(またはIA64)を返します

22  Gaff  2011-04-08


systeminfo

それはかなりの数のリストを表示しますが、その下の約10のフィールドにはSystem Typeと呼ばれるものがあります。これはx86かx64かを教えてくれます

9  MDMarra  2009-11-10


systeminfo | find /I "System type"

これはロケールに依存していて、遅い

echo %PROCESSOR_ARCHITECTURE%

32ビットのcmd.exeでx86であることに注目

Correct way:

set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)

8  airmax  2011-06-05


WMI クエリで確認する他の方法

PowerShell:

(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

6  Juli  2015-10-09


Windowsでプロセッサのアーキテクチャを確認する方法は数多くあります

  • 少なくとも Windows 2000 以降のプロセッサアーキテクチャを確認する最も速く、簡単で、互換性のある方法は、PROCESSOR_ARCHITECTURE 環境変数 を調べることです

    echo %PROCESSOR_ARCHITECTURE%

  • しかし、これはコマンドプロンプトの開き方によって、異なる結果が得られることがあります。WoW64による“予期せぬ結果 “を得ないようにするには、レジストリから直接読み取ることができます(マイクロソフトはキーに2つ以上のタイプミスをしています

    reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE

  • マイクロソフトは、レジストリからハードウェア情報ストアを読み取ることも提案しています

    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ビットとインテル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.

5  Synetech  2012-06-27


GENERIC SOLUTION

本当にこれを掘り下げてWMIで見て回る必要がありました

私の考えでは、このPowerShellの文字列を単純に使うのが一番の選択肢です

(Get-WmiObject win32_ComputerSystem -ComputerName $ComputerName).SystemType

これは、古いWindows 2003とXPでも動作します

のどれかになります

  • X86-based PC
  • x64-based PC

x64-based PC

または、いくつかの昔ながらのcmdツールに戻っている場合

wmic computersystem get systemtype

3  Dennis  2015-12-01


これは理想的な答えではなく、systeminfo.exeがシステムタイプ、つまり32ビットか64ビットかを決定するための好ましい方法であるべきですが、systeminfo.exeが作業を終えるのを待ちたくない場合は、この解決策は少し速く実行されます

The command:

reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | find "BuildLabEx"

レジストリクエリと検索文字列を正しく変更することで、Windows 95までのオペレーティングシステムのバージョンをチェックすることができます。systeminfo.exeはより正確で正しい検索方法であり、reg.exe queryはより高速で下位互換性があります

2  Justin  2011-04-06


Better SOLUTION:

方法1:(PROCESSOR_ARCHITECTUREPROCESSOR_ARCHITEW6432の2段階バリデーション)

set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)


if %Arch% == "x64"  (
msg * "yessss"
) else  (
msg * "noooo"
)

Method 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"

のソースを参照してください。https://superuser.com/a/293143/249349

0  T.Todua  2014-09-15


WMI インターフェイスを使用して、コマンドプロンプトの下で管理者としてコマンドプロンプトを開き、wmic OS get OSArchitectureと入力してEnterを押します

-1  Terry  2013-12-16


タイトルとURLをコピーしました