Hoe kan ik bepalen of de huidige versie van Windows 32-bit of 64-bit is vanaf de opdrachtregel?
Wat is de opdrachtregel om uit te zoeken of het OS een 32-bit versie of een 64-bit versie van Windows draait?
Wat is de opdrachtregel om uit te zoeken of het OS een 32-bit versie of een 64-bit versie van Windows draait?
Je kunt dit via WMI krijgen:
wmic OS get OSArchitecture
Voorbeeld op mijn systeem:
C:\>wmic OS get OSArchitecture
OSArchitecture
32-bit
Ik kan geen antwoord hechten aan een andere post dus hier. Het pipen van het resultaat van systeminfo
- kost een behoorlijke hoeveelheid tijd en schrijft naar de console dus is niet de beste oplossing voor command files (batch scripts - hoe je ze ook wilt noemen B-) ).
Zelfs met de findstr
- vindt het dit niet op andere taal versies van windows. Op een centraal europese taal win7 os geeft het ook … “X86-based”… op het resultaat maar iets anders dan het “type” waar we naar zochten. Ik ben er niet zeker van dat het kan variëren op andere taal varianten van het os.
Waarschijnlijk is de “wmic” methode de meest betrouwbare - die vraagt het os direct.
Een andere mogelijke snelle oplossing kan zijn om een variabele te onderzoeken (werkt bij mij in ieder geval op win7).
echo %PROCESSOR_ARCHITECTURE%
Ok - het is nogal lang om te onthouden, maar mogelijk kan een set | findstr ARCH
worden onthouden.
Zeker - sommigen kunnen een systeem variabele wijzigen dus niet zo betrouwbaar als wmic
. Maar kan snel gebruikt worden.
Ik hoop dat ik iemand heb kunnen helpen.
Er zijn verschillende manieren om de processorarchitectuur onder Windows te controleren:
De snelste, gemakkelijkste en meest compatibele manier om de processorarchitectuur te controleren in ten minste Windows 2000 en hoger is door de PROCESSOR_ARCHITECTURE
omgevingsvariabele te onderzoeken:
Dit kan echter verschillende resultaten geven, afhankelijk van de manier waarop de opdrachtprompt wordt geopend. Om te voorkomen dat u “onverwachte resultaten” krijgt als gevolg van WoW64 , kunt u deze direct uit het register lezen (Microsoft maakte niet minder dan twee typefouten in de sleutel ):
Microsoft stelt ook voor om de hardware-informatieopslag uit het register te lezen:
U kunt ook controleren of de x86-versie van de map Program Files
bestaat (of de omgevingsvariabele die daarnaar verwijst), aangezien deze alleen op een 64-bits systeem zou bestaan. In tegenstelling tot de PROCESSOR_ARCHITECTURE
variabele is dit niet afhankelijk van de manier waarop de opdrachtprompt wordt uitgevoerd, aangezien de map bestaat (of niet) ongeacht de manier waarop de prompt wordt geopend:
Deze methoden kunnen worden gecombineerd in een enkel batch-bestand (b.v. cpuinfo.bat
) en bieden een mooie, bliksemsnelle manier om het systeem te controleren vanaf een standaard Windows NT command-prompt zonder dat je je toevlucht hoeft te nemen tot het draaien van andere programma’s of frameworks.
Onderstaand batch-bestand werd getest op 32-bit en Intel 64-bit systemen (test a.u.b. op AMD64), en gaf correcte resultaten in <1 seconde:
@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![Test results](https://i.stack.imgur.com/4mmyH.png)" | 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.
0x1&
Ik kon de OSArchitecture
eigenschap niet vinden (zoals in het antwoord van phoebus) dus ik zou willen voorstellen om in plaats daarvan de SystemType
eigenschap in ComputerSystem
te gebruiken.
Het uitvoeren van het commando wmic computersystem get systemtype
vanaf een commando prompt geeft
C:\Windows\system32>wmic computersystem get systemtype
SystemType x64-based PC
Als u verwijst naar Windows OS, kunt u vbscript gebruiken met WMI
strComputer = "."
Set objWMIService = GetObject("winmgmts{impersonationLevel=impersonate,authenticationLevel=Pkt}!\" & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery("SELECT * FROM Win32_Processor")
For Each objProcessor In colSettings
Wscript.Echo "System Type: " & objProcessor.Architecture
Wscript.Echo "Processor: " & objProcessor.Description
Wscript.Echo "Address Width: "& objProcessor.AddressWidth
Next
Ga naar Start “ Uitvoeren en typ dan cmd
. Nu kom je in command prompt. Daar kunt u systeminfo
typen en vervolgens op enter drukken. Het duurt een paar seconden om al je systeeminformatie te krijgen. Je kunt ook de processorgegevens vinden.
Processor(s): 1 Processor(s) Installed.
[01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
C:\Documenten en Instellingen\mr85464>systeminfo
OS Name: Microsoft Windows XP Professional
OS Version: 5.1.2600 Service Pack 3 Build 2600
OS Manufacturer: Microsoft Corporation
OS Configuration: Member Workstation
OS Build Type: Multiprocessor Free
Product ID: 76487-640-3658033-23932
Original Install Date: 3/16/2012, 2:03:44 PM
System Up Time: 5 Days, 21 Hours, 35 Minutes, 51 Seconds
System Manufacturer: Dell Inc.
System Model: OptiPlex 210L
System type: X86-based PC
Processor(s): 1 Processor(s) Installed.
[01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
~2992 Mhz