Prozessor Architektur mit CMD/Batch/Registry auslesen

Ich habe es mal im Fernwartungs-Tutorial erwähnt und gerade wieder benötigt, das Auslesen der Prozessor Architektur mit CMD/Batch.

Also nochmal kurz erwähnt, der Befehl

echo %processor_architecture%

liefert entweder „x86“ oder „AMD64“ zurück. Eine Abfrage kann also mit

if %PROCESSOR_ARCHITECTURE% == AMD64 goto 64bit
if %PROCESSOR_ARCHITECTURE% == x86 goto 32bit
 
:64bit
echo 64
exit
 
:32bit
echo 32

geschehen.

Wer ganz sicher gehen will prüft das zusätzlich noch in der Registry ab, der Key „PROCESSOR_ARCHITECTURE“ aus

HKLM\System\CurrentControlSet\Control\Session Manager\Environment

bestätigt das und von „PROCESSOR_IDENTIFIER“ erhalten wir noch eine Bestätigung mit 2, 3 CPU Infos mehr.

if %PROCESSOR_ARCHITECTURE% == AMD64 set pa1=AMD64
if %PROCESSOR_ARCHITECTURE% == x86 set pa1=x86
for /f "tokens=2* delims= " %%a in ('reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" /v "PROCESSOR_ARCHITECTURE"') do set pa2=%%b
if %pa1%==%pa2% set final-pa=%pa1%
echo %final-pa%

Sollte reichen 🙂

4 Kommentare

  1. Die Batch Systemvariable %processor_architecture% gibt die Architektur des aktuell ausführenden Programms wieder.

    Wenn nun also auf einem 64bit System diese Variable in der CMD (ganz normal gestartet) abgefragt wird, so lautet der Wert „AMD64„. Starte ich jetzt aber auf einem 64bit System die 32bit CMD (C:WindowsSysWOW64cmd.exe) so wird „x86“ zurückgegeben.

    Der ausführende Kontext ist ausschlaggebenend. Für gewöhnlich wird die CMD aber mit der Architektur des Betriebssystems gestartet.

    Edit: Die Architektur des Prozessors (die seit Jahren auch schon 64bit-fähig ist) spielt also keine Rolle.

Schreibe einen Kommentar