명령 줄에서 32 비트 또는 64 비트 버전의 Windows Server를 실행하고 있는지 감지하는 가장 빠르고 빠른 방법은 무엇입니까?
(Cygwin이 설치됨)
답변
약간 더 빠른 방법은 % 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%
32 비트 시스템에서는 x86 을, 64 비트 시스템에서는 AMD64 (또는 IA64 )를 반환 합니다.
답변
systeminfo
약 10 개의 필드 아래에 시스템 유형이라는 필드가 있습니다. x86 또는 x64인지 알려줍니다.
답변
systeminfo | find /I "System type"
이것은 로케일에 따라 다르며 느립니다 .
echo %PROCESSOR_ARCHITECTURE%
공지 사항, 그것의 그 86 32 비트로 cmd.exe
.
올바른 방법 :
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
답변
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
답변
Windows에서 프로세서 아키텍처를 확인하는 방법은 여러 가지가 있습니다.
-
Windows 2000 이상 에서 프로세서 아키텍처를 확인하는 가장 빠르고, 쉽고, 가장 호환 가능한 방법 은
PROCESSOR_ARCHITECTURE
환경 변수 를 검사하는 것입니다 .echo %PROCESSOR_ARCHITECTURE%
-
그러나 이는 명령 프롬프트가 열리는 방식에 따라 다른 결과를 제공 할 수 있습니다. WoW64로 인해 “예기치 않은 결과”가 발생하는 것을 방지하기 위해 레지스트리에서 직접 읽을 수 있습니다 (Microsoft는 키에 오타를 두 번 이상 입력 하지 않았습니다 ).
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE
-
또한 레지스트리에서 하드웨어 정보 저장소를 읽는 것이 좋습니다.
reg query "HKLM\Hardware\Description\System\CentralProcessor\0" /v Identifier
-
64 비트 시스템에만 존재하므로 x86 버전의
Program Files
디렉토리 (또는 디렉토리 를 가리키는 환경 변수) 가 있는지 확인할 수도 있습니다.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.
답변
일반 솔루션
나는 이것을 정말로 파헤쳐 서 WMI에서 실제로 둘러보아야했습니다.
내 생각에 가장 좋은 옵션은 단순히이 PowerShell 문자열을 사용하는 것입니다
(Get-WmiObject win32_ComputerSystem -ComputerName $ComputerName).SystemType
이전 Windows 2003 및 XP에서도 작동합니다.
대답은
- X86 기반 PC
- x64 기반 PC
x64 기반 PC
또는 구식 cmd 도구로 되돌릴 경우
wmic computersystem get systemtype