7

Мне нужно собрать командный файл для Windows 7. Этот файл .bat только для установки приложения. Проблема заключается в том, что мне нужно знать, является ли Windows 7 32-разрядной (а затем запустить 32-разрядную программу установки) или это 64-разрядная версия Windows 7 (а затем запустить 64-разрядную программу установки). Какую команду можно использовать в командном файле, чтобы узнать, является ли Windows 7 32 или 64-битной?

Заранее спасибо!!!

4 ответа4

10

в 64-битной среде у вас будет переменная среды под названием

ProgramFiles(x86)

в 32-битной среде у вас нет этой переменной. чтобы вы могли проверить с

if defined ProgramFiles(x86) (
   REM do stuff for 64bit here
) else (
   REM do stuff for 32bit here
)
4

Если вы не хотите использовать временный текстовый файл, используйте канал:

Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
REG.exe Query %RegQry%  | Find /i "x86" 
If %ERRORLEVEL% == 0 (
    GOTO X86
) ELSE (
    GOTO X64
)


:X86

Commands here

GOTO END

:X64

commands here

:End
3

Когда вы используете DEFINED, вы не должны заключать имя переменной в символы%:

if defined ProgramFiles(x86) (
   :: do stuff for 64bit here
) else (
   :: do stuff for 32bit here
)
0

Вы можете использовать переменную среды PROCESSOR_ARCHITECTURE, чтобы определить, выполняется ли сам процесс как 32-разрядный или 64-разрядный. Значение равно AMD64 или x86.

Вы должны быть осторожны, хотя. Если ваш пакетный файл запускается из 32-разрядной версии CMD.EXE (в \Windows \SysWOW64), эта переменная будет иметь значение "x86", тогда как в случае с CMD.EXE в \Windows это будет "AMD64" \System32 в 64-разрядной версии Windows.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .