Пакетный файл на флешке - как проверить архитектуру ОС? - PullRequest
2 голосов
/ 10 августа 2011

Я настраиваю портативную среду разработки. Я пытаюсь получить разрядность текущей системы, к которой подключен мой флэш-накопитель (32 или 64), из пакетного файла, чтобы я мог использовать правильную версию своей среды IDE.

Эта статья является началом: http://support.microsoft.com/kb/556009, но он использует относительный адрес, и, конечно, на моей флешке нет ОС, поэтому код по умолчанию i586 каждый раз.

Что такое LOC, мне нужно это сделать?

Ответы [ 4 ]

2 голосов
/ 18 октября 2012

Существует предостережение для решения Тобиаса Шлегеля: переменная среды PROCESSOR_ARCHITECTURE возвращает только битность текущего процесса. На 64-битной машине из-за эмуляции WoW64 PROCESSOR_ARCHITECTURE все равно будет «x86» в 32-битных процессах.

Чтобы исправить это, Microsoft добавила новую переменную среды PROCESSOR_ARCHITEW6432, которая определяется только в процессах, работающих в WoW64.

Следовательно, правильный код:

if "%PROCESSOR_ARCHITECTURE%" == "x86" if "%PROCESSOR_ARCHITEW6432%" == "" goto Arch32
goto Arch64

:Arch32
echo System architecture is 32-bit!
goto:eof

:Arch64
echo System architecture is 64-bit!
goto:eof

Это различие важно, потому что если вы запустите cmd.exe из 32-разрядного процесса на 64-разрядной машине, то cmd.exe будет работать под WoW64, и поэтому принятое решение будет неверным.

2 голосов
/ 10 августа 2011

просто проверьте переменную среды PROCESSOR_ARCHITECTURE на моей 64-битной машине, это "AMD64", я думаю, на 32-битной машине это "x86".

1 голос
/ 10 августа 2011

wmic OS get OSArchitecture

Должен вернуть либо 32-bit, либо 64-bit.

0 голосов
/ 10 августа 2011

Вы можете этот кусок кода (реестра):

Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0

REG.exe Query %RegQry% 2>NUL | find /I /N "x86">NUL

If [%ERRORLEVEL%] == [0] (
    echo X86
) ELSE (
    echo AMD64
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...