Was ist die beste und schnellste Methode, um festzustellen, ob Sie eine 32- oder 64-Bit-Version von Windows Server über die Befehlszeile ausführen?
(Cygwin ist installiert)
Was ist die beste und schnellste Methode, um festzustellen, ob Sie eine 32- oder 64-Bit-Version von Windows Server über die Befehlszeile ausführen?
(Cygwin ist installiert)
Antworten:
Eine etwas schnellere Möglichkeit wäre, nach dem% ProgramFiles (x86)% -Verzeichnis zu suchen. Wenn es vorhanden ist, wird 64-Bit ausgeführt. Wenn es nicht vorhanden ist, wird 32-Bit ausgeführt.
Schneller Einzeiler:
if exist "%ProgramFiles(x86)%" echo 64-bit
Das wird ausgegeben, 64-bit
wenn das Verzeichnis existiert. Dies würde jedoch fehlschlagen, wenn es nicht als Variable, sondern als Verzeichnis (als% ProgramFiles (x86)%) existieren würde.
Sie können auch das Such-Tool verwenden, um die Bit-Qualität genauer zu bestimmen.
set | find "ProgramFiles(x86)"
oder mit dem systeminfo
Befehl zuvor
systeminfo | find /I "System type"
(Beinhaltet das /I
für XP / 2003/2008 / etc)
Wie wäre es mit:
echo %PROCESSOR_ARCHITECTURE%
Dies gibt x86 auf 32-Bit-Systemen und AMD64 (oder IA64 ) auf 64-Bit-Systemen zurück.
Program Files (x86)
Verzeichnisses zu überprüfen, wenn jemand anderes es gepostet hat. Sie können auch überprüfen, %PROGRAMFILES(X86)%
ob die Umgebungsvariable vorhanden ist (wenn sie nicht vorhanden ist, befinden Sie sich auf einem x86-Computer).
systeminfo | find /I "System type"
Dies ist vom Gebietsschema abhängig und langsam .
echo %PROCESSOR_ARCHITECTURE%
Beachten Sie, dass es sich um x86 in 32-Bit handelt cmd.exe
.
Der richtige Weg:
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
PROCESSOR_ARCHITEW6432
Eine andere Möglichkeit, mit einer WMI-Abfrage zu überprüfen:
Power Shell:
(gwmi win32_computersystem).SystemType
CMD:
wmic OS get OSArchitecture
Von hier extrahiert: http://www.sysadmit.com/2015/10/windows-como-saber-si-es-de-32-o-64-bits.html
Es gibt zahlreiche Möglichkeiten, die Prozessorarchitektur unter Windows zu überprüfen:
Die schnellste, einfachste und kompatibelste Möglichkeit, die Prozessorarchitektur in mindestens Windows 2000 und höher zu überprüfen, besteht darin, die PROCESSOR_ARCHITECTURE
Umgebungsvariable zu untersuchen :
echo %PROCESSOR_ARCHITECTURE%
Dies kann jedoch zu unterschiedlichen Ergebnissen führen, je nachdem, wie die Eingabeaufforderung geöffnet wird. Um zu vermeiden, dass aufgrund von WoW64 „unerwartete Ergebnisse“ erzielt werden , können Sie diese direkt aus der Registrierung lesen (Microsoft hat nicht weniger als zwei Tippfehler im Schlüssel gemacht ):
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE
Microsoft empfiehlt außerdem, den Hardware-Informationsspeicher aus der Registrierung zu lesen:
reg query "HKLM\Hardware\Description\System\CentralProcessor\0" /v Identifier
Sie können auch prüfen, ob die x86-Version des Program Files
Verzeichnisses (oder der darauf verweisenden Umgebungsvariablen ) vorhanden ist, da sie nur auf einem 64-Bit-System vorhanden wäre. Im Gegensatz zur PROCESSOR_ARCHITECTURE
Variablen hängt dies nicht davon ab, wie die Eingabeaufforderung ausgeführt wird, da das Verzeichnis vorhanden ist (oder nicht), unabhängig davon, wie die Eingabeaufforderung geöffnet wird:
::via env-var
if not defined ProgramFiles(x86) echo 32-bit
::via file-system
if not exist "%systemdrive%\Program Files (x86)" echo 32-bit
Diese Methoden können in einer einzigen Batch-Datei kombiniert werden (z. B. cpuinfo.bat
) und bieten eine schöne, blitzschnelle Möglichkeit, das System über eine Windows NT-Standard-Eingabeaufforderung zu überprüfen, ohne dass andere Programme oder Frameworks ausgeführt werden müssen.
Dies wurde auf 32-Bit- und Intel 64-Bit-Systemen getestet (bitte auf AMD64 testen) und ergab korrekte Ergebnisse in <1 Sekunde:
@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.
Ich musste mich wirklich damit auseinandersetzen und mich in WMI umsehen.
Die beste Option ist meiner Meinung nach, einfach diese PowerShell-Zeichenfolge zu verwenden
(Get-WmiObject win32_ComputerSystem -ComputerName $ComputerName).SystemType
Dies funktioniert sogar mit alten Windows 2003 und XP
Die Antwort wird eine von sein
x64-basierter PC
Oder wenn Sie auf einige altmodische cmd-Tools zurückgreifen
wmic computersystem get systemtype
Obwohl dies nicht die ideale Antwort ist und systeminfo.exe
Ihre bevorzugte Methode zur Bestimmung des Systemtyps sein sollte, dh 32-Bit oder 64-Bit, läuft diese Lösung etwas schneller, wenn Sie nicht warten möchten, systeminfo.exe
bis die Arbeit abgeschlossen ist.
Der Befehl:
reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | find "BuildLabEx"
Mit den richtigen Änderungen an der Registrierungsabfrage und der Suchzeichenfolge können Sie auch Betriebssystemversionen ab Windows 95 überprüfen. Ist systeminfo.exe
genauer und die richtige Art der Abfrage, reg.exe query
ist schneller und abwärtskompatibler.
reg query "HKLM\[..as before..]\Version" /v BuildLabEx
Methode 1:
(Bestätigung in zwei Schritten mit PROCESSOR_ARCHITECTURE
und 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"
)
Methode 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"
Quelle: /superuser//a/293143/249349
systeminfo | find "System type"
Capitol T sein, das nichts zurückgibt.