set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
reg.exe Query %RegQry% > checkOS.txt
find /i "x86" < CheckOS.txt > StringCheck.txt
if %ERRORLEVEL% == 0 (
goto os32
) else (
goto os64
)
:os32
rem do something here
goto check_done
:os64
rem OS is 64 bit
:check_done
del StringCheck.txt
del CheckOS.txt
29 нояб. 2010 г.
32 или 64? Определение разрядности ОС из bat файла
Чтобы из пакетного файла определить какая операционная система установлена приходится буквально стучать в бубен и взывать к духам предков:
Labels:
windows
3 комментария:
Всё гораздо проще.
@echo off
cls
rem Источник: http://blogs.msdn.com/b/david.wang/archive/2006/03/26/howto-detect-process-bitness.aspx
rem При наличии переменной PROCESSOR_ARCHITEW6432 система 64-х битная, но работает в режиме 32-х битной эмуляции.
rem PROCESSOR_ARCHITECTURE — переменнная, содержащая информацию об архитектуре процессора (возможные варианты: x86, IA64, AMD64).
rem 1) PROCESSOR_ARCHITECTURE==x86 и PROCESSOR_ARCHITEW6432 не определена — 32-х разрядная система;
rem 2) PROCESSOR_ARCHITECTURE==AMD64 и PROCESSOR_ARCHITEW6432 не определена — 64-х разрядная система на базе x64, программа запущена в родном режиме (64-х битном);
rem 3) PROCESSOR_ARCHITECTURE==IA64 и PROCESSOR_ARCHITEW6432 не определена — 64-х разрядная система на базе Itanium, программа запущена в родном режиме (64-х битном);
rem 4) PROCESSOR_ARCHITECTURE==x86 и PROCESSOR_ARCHITEW6432==AMD64 — 64-х разрядная система на базе x64, программа запущена в режиме x86;
rem 5) PROCESSOR_ARCHITECTURE==x86 и PROCESSOR_ARCHITEW6432==IA64 — 64-х разрядная система на базе Itanium, программа запущена в режиме эмуляции x86.
rem echo run test windows x64 or x32
if defined PROCESSOR_ARCHITEW6432 (goto LABEL_X64)
if %PROCESSOR_ARCHITECTURE%==IA64 (goto LABEL_X64)
if %PROCESSOR_ARCHITECTURE%==AMD64 (goto LABEL_X64)
if %PROCESSOR_ARCHITECTURE%==x86 (goto LABEL_X86)
goto LABEL_NON
:LABEL_X64
echo OS type: x64
goto LABEL_END
:LABEL_X86
echo OS type: x86
goto LABEL_END
:LABEL_NON
echo OS type: undefined
goto LABEL_END
:LABEL_END
pause
Set P=x64& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set P=x86
Echo %P%
можно еще проще :)
IF ESIXT %systemdrive%\program files (x86) goto x64
:x64
Отправить комментарий