Что могу сказать… У меня, приведённый мною код, работает корректно. Обычно я даже проверяю ещё раз после выкладывания, дабы постараться избежать нелепых опечаток/ошибок при копировании.
Сие может зависеть отчасти от версии reg.exe; Вы можете попробовать, как
указывал amel27, не использовать «skip», а фильтровать выходной поток команды «reg.exe», только используя в качестве фильтра имя параметра:
Код:
for /f "tokens=3* delims= " %%i in ('reg.exe query "HKCU\Console" /v "FaceName"^|find.exe /i "FaceName"') do (
вместо
Код:
for /f "skip=3 tokens=3* delims= " %%i in ('reg.exe query "HKCU\Console" /v "FaceName"') do (
Цитата user_123:
А, в целом, у меня так написано…
|
А почему именно так? Ибо у меня команда (с реально существующими параметрами):
Код:
for /f "tokens=2*" %i in ('reg.exe query "HKCU\Console" /v "FaceName"') do echo %i
выдаёт ожидаемое:
В таком случае верните на место своё «echo
%%j» (а не «
%%i», как в моём примере), поскольку Вы используете «tokens=2*» (а я — «tokens=3*»), и у Вас «*» будет как раз в «%%j».
Цитата user_123:
А если ключа реестра нет, то нет и значения у переменной тоже нет...
|
Логично
.
Цитирую…
читать дальше »
…условие задачи, поставленное Вами же:
Цитата user_123:
…как проверить, содержится ли в значении ключа реестра искомая строка…
|
Про то, что требуется попутно проверять наличие самого раздела и/или параметра реестра (и
как следует в этом случае поступать) — не упоминалось никоим образом.