У меня есть следующий код, который находит и распечатывает значения типа DWORD внутри ключа в SpecialUserRegDir
. Вторичная часть этого кода - это число, которое просто увеличивается с каждой итерацией. К сожалению, я не могу найти способ доступа к переменным, которые, похоже, правильно вычисляются.Отображение переменных DelayedExpansion внутри цикла
@echo OFF
@setlocal EnableExtensions EnableDelayedExpansion
set SpecialUserRegDir=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
set number=0
set /a number+=1
REG QUERY "%SpecialUserRegDir%" /s | for /F %%f in ('findstr "REG_DWORD"') do @(
set /a number+=1 :: Output: Values I need (2,3 etc)
@Echo !number! :: Output: !number!
@Echo %number% :: Output: 1
@echo %%f :: Output: [name of registry value]
)
@Echo !number! :: Output: 1
@Echo %number% :: Output: 1
Раздел реестра не так важен, потому что он работает. Мне интересно, есть ли способ сохранить структуру цикла и получить доступ к значениям number
из цикла.
EDIT: Только один из выходов изменены с новым кодом:
for /F %%f in ('REG QUERY "%SpecialUserRegDir%" /s ^| findstr "REG_DWORD"') do (
set /a number+=1 :: Output: Values I need (2,3 etc)
@Echo !number! :: Output: !number!
@Echo %number% :: Output: 1
@echo %%f :: Output: [name of registry value]
)
@Echo !number! :: Output: 4 (correct, because there are 3 values)
@Echo %number% :: Output: 1 (expected....)
EDIT 2: Не обращайте внимания на первое редактирование. У меня было несколько блокнотов с открытым кодом и сохранили новый код в старой версии без EnableDelayedExpansion
.
Я пробовал этот код. Номер после цикла! теперь получает правильную информацию, но внутренняя часть цикла совсем не изменилась. Хотя, я думаю, я понимаю вопрос, который вы указали, я буду экспериментировать немного завтра и посмотреть, как это получается. – Zero
Я добавил объяснение вашей второй проблемы (отсутствующая опция токена) – jeb