![]() |
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, да тут просто полный разбор всех вариантов по моему вопросу
|
Время: 17:07. |
Время: 17:07.
© OSzone.net 2001-