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 🙂
Wird auch ein 64-Bit-Prozessor von Intel als „AMD64“ gemeldet? o.O
jap
Und wenn jemand eine 32Bit Version auf einem 64Bit PC installiert? 🙂
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.