четверг, 23 июня 2011 г.

Cmd: Detect 64-bit Windows

Windows 64-bit присутствует на рынке довольно давно, но несмотря на это, не перестаёт удивлять разнообразие методов (не всегда корректных) определения разрядности системы в cmd скриптах.

В качестве примера, рассмотрим популярные ответы на вопрос Detect Windows Server version 32/64-bit in CLI на сайте superuser.com:
  1. systeminfo | find /I "System type"
    
    Недостатки: Во первых, работает медленно. Во вторых, не будет работать если используется локаль отличная от английской. В третьих, необходимо дополнительно проводить разбор вывода.

  2. Arch=x86
    if exist "%ProgramFiles(x86)%" set Arch=x64
    
    Недостаток: Условие отработает некорректно если существует директория с таким именем. Редкий случай, но тем не менее возможный.

  3. reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | find "BuildLabEx"
    
    Недостаток: Необходим дополнительный разбор вывода.

  4. wmic OS get OSArchitecture
    
    Недостаток: Необходим дополнительный разбор вывода.

  5. set Arch=x64
    if "%PROCESSOR_ARCHITECTURE%" == "x86" ( 
        if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
    )
    
    Недостатки: пока не обнаружены.
    Продолжительное время успешно использую данный метод. К тому же, при желании можно уточнить актуальную архитектуру: x86, amd64, ia64.
А какой способ используете Вы?

Комментариев нет:

Отправить комментарий