![]() |
reg при обращении к разделу, содержащему знаки %
Не могу понять, как экранировать знак % при обращении к реестру
Код:
reg query HKCU\Console\%%SystemRoot%%_system32_cmd.exe |
TolikD, пример:
Код:
set V=HKCU\Console\%%SystemRoot%%_system32_cmd.exe |
Да, работает.
То есть без set я так понял не обойтись? Мне не принципиально, просто интересно. |
TolikD, у меня работает и первый вариант:
Скрытый текст
![]()
Windows 7 SP1 x64. |
Цитата:
Цитата:
Цитата:
залез в реестр ручками - нет такого ключа у меня, для проверки можно запустить: Код:
reg query "HKCU\Console" /s|find "cmd.exe" |
Windows 7 SP1 x86
На данный момент у меня работает и первый вариант, при том, что в прошлый раз не работал. Не пойму с чем это связано... |
|
alpap, есть ещё вариант, что тестировал экранирование то в батнике, то в командной строке и банально сам себя запутал. Там по разному работает. Попробуй выполнить в cmd.exe
Код:
set V=HKCU\Console\%%SystemRoot%%_system32_cmd.exe & reg query %V% |
TolikD,
так как написано не будет работать, переменная не раскроется в этой же строке, надо команду с переменной писать на новой строке: Код:
set V=HKCU\Console\%%SystemRoot%%_system32_cmd.exeчто выводит команда: Код:
reg query "HKCU\Console" /s|find "cmd.exe"Код:
reg query "HKCU\Console\%SystemRoot%_system32_cmd.exe" |
Да, действительно, команда set так не работает, как я думал
Код:
C:\Windows\system32>set a=hello & echo %a%Код:
C:\Windows\system32>set a=hello & call echo %a%Код:
C:\Windows\system32>set V=HKCU\Console\%%SystemRoot%%_system32_cmd.exe & call echo %V%Код:
C:\Windows\system32>set V=HKCU\Console\%%SystemRoot%%_system32_cmd.exeКод:
set V=HKCU\Console\%%SystemRoot%%_system32_cmd.exeКод:
C:\temp>set V=HKCU\Console\%SystemRoot%_system32_cmd.exeЦитата:
|
Цитата:
Скрытый текст
Цитата:
Цитата:
|
TolikD, тут у Вас сразу куча ошибок.
1. Заключайте присваивание литеральных значений переменным окружения в кавычки, если не хотите добавления лишних пробелов: Код:
set "sVar=bla-bla-bla" & echo [%sVar%]Код:
set sVar=bla-bla-bla& echo [%sVar%]2. Когда Вы задаёте значения параметров у reg.exe — тоже используйте кавычки: Код:
reg.exe query "HKCU\Console"Код:
C:\Мои проекты\0287>set sVar=bla-bla-bla & echo [%sVar%]4. Чтобы разрешить подобное использование переменных окружения, можно использовать механизм двойного раскрытия по call: Код:
C:\Мои проекты\0287>set "sVar=bla-bla-bla" & call echo [%sVar%]Код:
set "sVar=bla-bla-bla" & echo [!sVar!]Код:
C:\Мои проекты\0287>reg.exe query HKEY_CURRENT_USER\Console\^%SystemRoot^%_system32_cmd.exeКод:
C:\Мои проекты\0287>reg.exe query ^"HKEY_CURRENT_USER\Console\^%SystemRoot^%_system32_cmd.exe^"Код:
C:\Мои проекты\0287>set "sVar=HKEY_CURRENT_USER\Console\^%SystemRoot^%_system32_cmd.exe" & call reg.exe query ^%sVar^% |
Iska, да тут просто полный разбор всех вариантов по моему вопросу
|
| Время: 23:27. |
Время: 23:27.
© OSzone.net 2001-