Существует предостережение для решения Тобиаса Шлегеля: переменная среды 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, и поэтому принятое решение будет неверным.