Для этого конкретного случая вы можете начать с:
for /f "tokens=3" %i in ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE ^| findstr PROCESSOR_ARCHITECTURE') do set x=%i
, который установит %x%
в x86 (в моем случае).
Если третье значение в строке может содержать пробелы, вам нужно немного усложнить
Следующий скрипт показывает один способ быть хитрее. Он в основном использует строку отладки для вымышленного вывода из reg
, который дает вам архитектуру с пробелами.
@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "tokens=2*" %%a in ('echo. PROCESSOR_ARCHITECTURE REG_SZ x86 64-bit grunter') do (
set arch=%%b
)
echo !arch!
endlocal
Вывод этого:
x86 64-bit grunter
как и ожидалось (имейте в виду, что он объединяет несколько пробелов в один). Бит tokens=2*
переводит токен 2 (REG_SZ
) в %%a
и все последующие токены в %%b
.
Итак, хорошим финальным сценарием будет:
@setlocal enableextensions enabledelayedexpansion
@echo off
set id=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
set key=PROCESSOR_ARCHITECTURE
for /f "tokens=2*" %%a in ('REG QUERY "!id!" /v !key! ^| findstr !key!') do (
set arch=%%b
)
echo !arch!
if !arch!==x86 echo arch was x86
endlocal
Этот скрипт выводит:
x86
arch was x86
чтобы вы знали, что он установлен по вашему желанию.