Windows 64-bit присутствует на рынке довольно давно, но несмотря на это, не перестаёт удивлять разнообразие методов (не всегда корректных) определения разрядности системы в cmd скриптах.
В качестве примера, рассмотрим популярные ответы на вопрос Detect Windows Server version 32/64-bit in CLI на сайте superuser.com:
В качестве примера, рассмотрим популярные ответы на вопрос Detect Windows Server version 32/64-bit in CLI на сайте superuser.com:
systeminfo | find /I "System type"
Недостатки: Во первых, работает медленно. Во вторых, не будет работать если используется локаль отличная от английской. В третьих, необходимо дополнительно проводить разбор вывода.
Arch=x86 if exist "%ProgramFiles(x86)%" set Arch=x64
Недостаток: Условие отработает некорректно если существует директория с таким именем. Редкий случай, но тем не менее возможный.
reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | find "BuildLabEx"
Недостаток: Необходим дополнительный разбор вывода.
wmic OS get OSArchitecture
Недостаток: Необходим дополнительный разбор вывода.
set Arch=x64 if "%PROCESSOR_ARCHITECTURE%" == "x86" ( if not defined PROCESSOR_ARCHITEW6432 set Arch=x86 )
Недостатки: пока не обнаружены.
Продолжительное время успешно использую данный метод. К тому же, при желании можно уточнить актуальную архитектуру: x86, amd64, ia64.