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_ARCHITECTURE
とPROCESSOR_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