Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] reg при обращении к разделу, содержащему знаки %

Ответить
Настройки темы
CMD/BAT - [решено] reg при обращении к разделу, содержащему знаки %

Новый участник


Сообщения: 33
Благодарности: 0

Профиль | Отправить PM | Цитировать


Не могу понять, как экранировать знак % при обращении к реестру
Код: Выделить весь код
reg query HKCU\Console\%%SystemRoot%%_system32_cmd.exe
Ошибка: Не удается найти указанный раздел или параметр в реестре.

Отправлено: 12:40, 08-12-2019

 

Ветеран


Contributor


Сообщения: 25421
Благодарности: 7385

Профиль | Отправить PM | Цитировать


Цитата alpap:
я вообще не понимаю как выглядит этот ключ, »
Так:
Скрытый текст


Цитата alpap:
я пытался создать такой для проверки - не получается »
Win-R, cmd.exe, Enter, затем Alt-Space, Свойства. Что-нибудь изменить в свойствах окна консоли (например, Шрифт, его размер), нажать OK. В реестре появится подраздел по имени исполняемого файла — HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe.

Цитата TolikD:
Этот ключ создаётся не тогда, когда делаешь запуск cmd.exe c ярлыка в пуске или пункта "Выполнить", а когда непосредственно делаешь запуск батника "file.cmd" »
Нет. Не тогда.

Отправлено: 18:45, 12-12-2019 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 25421
Благодарности: 7385

Профиль | Отправить PM | Цитировать


TolikD, тут у Вас сразу куча ошибок.

1. Заключайте присваивание литеральных значений переменным окружения в кавычки, если не хотите добавления лишних пробелов:
Код: Выделить весь код
set "sVar=bla-bla-bla" & echo [%sVar%]
Либо убирайте эти пробелы:
Код: Выделить весь код
set sVar=bla-bla-bla& echo [%sVar%]
из кода.

2. Когда Вы задаёте значения параметров у reg.exe — тоже используйте кавычки:
Код: Выделить весь код
reg.exe query "HKCU\Console"
3. Переменная окружения %V% в команде «reg.exe query %V%» ещё не будет существовать:
Код: Выделить весь код
C:\Мои проекты\0287>set sVar=bla-bla-bla & echo [%sVar%]
[%sVar%]
— поскольку сначала интерпретируется вся строка, а затем только начинается её разбор и исполнение отдельных команд.

4. Чтобы разрешить подобное использование переменных окружения, можно использовать механизм двойного раскрытия по call:
Код: Выделить весь код
C:\Мои проекты\0287>set "sVar=bla-bla-bla" & call echo [%sVar%]
[bla-bla-bla]
5. Другой путь — включение отложенного расширения переменных окружения по умолчанию (в реестре), или запуск интерпретатора команд с параметром /v:on, а затем использование отложенного расширения переменных окружения:
Код: Выделить весь код
set "sVar=bla-bla-bla" & echo [!sVar!]
6. Экранирование непосредственно в командной строке:
Код: Выделить весь код
C:\Мои проекты\0287>reg.exe query HKEY_CURRENT_USER\Console\^%SystemRoot^%_system32_cmd.exe

HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
    ScreenBufferSize    REG_DWORD    0x32008c
    WindowSize    REG_DWORD    0x2a008c
    ScreenColors    REG_DWORD    0x7
    PopupColors    REG_DWORD    0xf5
…
либо:
Код: Выделить весь код
C:\Мои проекты\0287>reg.exe query ^"HKEY_CURRENT_USER\Console\^%SystemRoot^%_system32_cmd.exe^"

HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
    ScreenBufferSize    REG_DWORD    0x32008c
    WindowSize    REG_DWORD    0x2a008c
    ScreenColors    REG_DWORD    0x7
    PopupColors    REG_DWORD    0xf5
    ColorTable00    REG_DWORD    0x0
…
Теперь, что касается именно set Var= с процентами и последующего за ним reg query %Var% при не разрешённом отложенном расширении переменных окружения.
Код: Выделить весь код
C:\Мои проекты\0287>set "sVar=HKEY_CURRENT_USER\Console\^%SystemRoot^%_system32_cmd.exe" & call reg.exe query ^%sVar^%

HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
    ScreenBufferSize    REG_DWORD    0x32008c
    WindowSize    REG_DWORD    0x2a008c
    ScreenColors    REG_DWORD    0x7
    PopupColors    REG_DWORD    0xf5
    ColorTable00    REG_DWORD    0x0
    ColorTable01    REG_DWORD    0x800000
…

Последний раз редактировалось Iska, 13-12-2019 в 02:13. Причина: Чёртовы автоматические смайлы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:54, 12-12-2019 | #12


Новый участник


Сообщения: 33
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, да тут просто полный разбор всех вариантов по моему вопросу

Отправлено: 09:56, 13-12-2019 | #13



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] reg при обращении к разделу, содержащему знаки %

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Подтупливание HDD при обращении bziki.t4 Металлолом 1 12-08-2012 16:32
MSFT SQL Server - Падение БД при обращении пользователей DruOleg Программирование и базы данных 0 15-09-2010 14:04
Прочее - При разных админских паролях вылетает запрос при обращении aka_smile Сетевые технологии 3 28-10-2009 17:16
Интерфейс - При вставке из буфера вместо русских знаки вопроса torrri Microsoft Windows 2000/XP 3 23-03-2008 22:23
Ошибка при обращении к диску Masick Microsoft Windows 2000/XP 19 18-05-2006 18:20




 
Переход