Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

По созданию bat

Пофиг Нафигович Ученик (107), открыт 1 день назад
как батом получить в ответ на команду:

reg query "HKLM\SOFTWARE\..." /v ProductACode> ID_1.txt

получить ответ в файле ID_1.txt вида:
0000008c

никак не удается добиться нужного, и в ответ в файле ID_1.txt
с точностью до знака:
HKEY_LOCAL_MACHINE\SOFTWARE\...

ProductACode REG_DWORD 0x8c
Дополнен 23 часа назад
КЛЮЧЕВОЙ МОМЕНТ:
0х8с
А надо:
0000008с
(дилетантам: огромная просьба не пудрить моск ерундой!)
3 ответа
злобная дичь с атомного леса Гуру (4594) 1 день назад
Regular Expression ищи по запросу
Пофиг НафиговичУченик (107) 1 день назад
при чем тут поиск и замена? Если речь об формате написания числа?!?!
S.H.I. Оракул (70605) 1 день назад
@echo off
setlocal enabledelayedexpansion

rem Выполняем запрос к реестру и пропускаем первые две строки заголовка.
for /f "skip=2 tokens=1,2,3" %%A in ('reg query "HKLM\SOFTWARE\...\ProductACode" /v ProductACode') do (
set "rawValue=%%C"
)

rem Проверяем, если получили значение, то:
if defined rawValue (
rem Удаляем префикс "0x".
set "hexValue=%rawValue:0x=%"

rem Дополняем значение нулями до 8 символов.
set "padded=00000000%hexValue%"
set "result=%padded:~-8%"

rem Записываем результат в файл.
echo %result%> ID_1.txt
) else (
echo Не удалось получить значение реестра.> ID_1.txt
)

endlocal

Нужно заменить "HKLM\SOFTWARE..." на полный путь к ключу реестра. Если имя значения отличается от ProductACode, тоже замените его.
Пофиг НафиговичУченик (107) 23 часа назад
глупый совет, особенно учитывая, что ответ будет идентичным указанному...
путь к ключу и его название НЕ ВЛИЯЮТ на его написание! Надо заставить выводить ответ в формате 0000008 а не 0х...
Максим Пятых Профи (818) 7 часов назад
Чувак уже отвечал на это.
команду:

reg query "HKLM\SOFTWARE\..." /v ProductACode> ID_1.txt
HKEY_LOCAL_MACHINE\SOFTWARE\ID_1.txt/0000008c/ProductACode REG_DWORD 0x8c
Ну и ечо оф в начале


Использовать команду REG QUERY. Она позволяет выполнить запрос к реестру и получить значение по указанному пути и ключу. 12
Обрабатывать вывод команды с помощью команды for /f. Она позволяет обрабатывать вывод команды и сохранять нужные данные в переменную. 1
Пример скрипта, который извлекает путь из реестра и копирует файлы: 1

@echo off

rem Получаем путь из реестра
for /f "usebackq tokens=3*" %%i in (`reg query "HKCU\Software\MySoftware" /v "MyPath"`) do set "p=%%j"
Ну и ответ от нейро небольшой
rem Копируем файлы с использованием полученного пути
copy "%p%\*.txt" "%~dp0папка_рядом_с_бат_файлом"
В этом примере команда for /f "usebackq tokens=3*" %%i in (reg query "HKCU\Software\MySoftware" /v "MyPath") do set "p=%%j" выполняет запрос в реестр, извлекая значение из третьего токена (путь к папке) и сохраняя его в переменную p. 1
Похожие вопросы