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

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

Ответить
Настройки темы
CMD/BAT - [решено] Имопрт Reg-файла

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


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

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


Привет.

Как узнать, что импорт REG-файла прошёл успешно?

Допустим, я запускаю батник с таким содержимым.

Код: Выделить весь код
reg import "C:\Temp\111.reg"
echo %errorlevel%
Reg-файл имеет такое содержимое.

Код: Выделить весь код
[HKEY_CURRENT_USER\Software\111]
В любом случае возвращается 0.

Даже если доступ к ключу запрещён, и ничего не вносится.
Даже если корневого раздела не существует.

Во всех справках говорится, что при сбое будет возвращена единица.

Как, вообще, возможно узнать, удачно-ли импортировался Reg-файл?

Отправлено: 12:12, 17-11-2018

 

Ветеран


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

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


если вы не просто ветку создаете (иначе именно reg import лишнее reg add хватит), а и данные в ней, то проверить не пустая ли ветка и естественно ее существование, можно так:
Код: Выделить весь код
reg import "C:\Temp\111.reg"
reg query "HKEY_CURRENT_USER\Software\111"|find /v "" && (echo Успешно, ветка не пуста) || (echo Или данные не внесены или ветки нет)
pause
ну и конечно, если ветка есть и данных немало, то проверять на добавление свежих, т.е. вместо: find /v "" писать find "Какие-то данные"

в PowerShell легче работать с реестром, а тут что первое в голову пришло то и написал.

Отправлено: 13:28, 17-11-2018 | #2



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

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


Ветеран


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

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


Цитата Cytus:
В любом случае возвращается 0. »
Да ладно. Вот для Вашего файла не-реестра:
Цитата Cytus:
Reg-файл имеет такое содержимое.
Код: Выделить весь код
[HKEY_CURRENT_USER\Software\111]
»
Скрытый текст


Если же исправить Ваш файл не-реестра, добавив в него потребное согласно описанию формата файла реестра, то:
Скрытый текст

Последний раз редактировалось Iska, 17-11-2018 в 13:42.


Отправлено: 13:33, 17-11-2018 | #3


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


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

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


Я имеею ввиду, что допустим, доступ к разделу запрещён.
Соответстсвенно, записано ничего не будет.
Но возвратиться 0, которое говорит об успехе.

Отправлено: 13:43, 17-11-2018 | #4


Ветеран


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

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


Другое дело, что толку в этом мало: ну, предположим, узнали мы, что некая часть данных не была успешно импортирована в реестр — и что? Чтобы реально отслеживать что-то, нужны единичные операции с каждым отдельным разделом и параметром, и ведение лога на каждый чих.

Отправлено: 13:46, 17-11-2018 | #5


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


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

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


Нет там потоков. STDOUT в Regedit.exe не поддерживается.

Отправлено: 14:07, 17-11-2018 | #6


Ветеран


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

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


Цитата Cytus:
Я имеею ввиду, что допустим, доступ к разделу запрещён.
Соответстсвенно, записано ничего не будет.
Но возвратиться 0, которое говорит об успехе. »
Пожалуйста:
Скрытый текст

Я запретил полный доступ группе Everyone (Все) к разделу реестра HKEY_CURRENT_USER\Software\111. Результат попытки импорта файла реестра посредством reg.exe Вы видите. Что не так?

Отправлено: 14:10, 17-11-2018 | #7


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


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

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


Ну вот допустим.

Код: Выделить весь код
for %%f in (*.reg) do reg import "%%f"
1.cmd>\111.txt

В 111.txt я хочу увидеть успех или ошибку.
Как такое сделать?

Отправлено: 14:11, 17-11-2018 | #8


Ветеран


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

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


Cytus, а Вы для начала определитесь, что есть успех и что есть ошибка. Затем перенаправьте стандарный поток ошибок в стандартный поток вывода (поскольку reg.exe для информирования использует именно стандартный поток ошибок, а не стандартный поток вывода (стандартный поток вывода используется, например, для reg.exe query и т.п.):
Скрытый текст


А ещё лучше будет примерно так:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

>"Result.txt" 2>&1 (
	for %%i in (*.reg) do (
		echo [%%~fi]:
		echo ---------------------------------
		reg.exe import "%%~i"
		echo ---------------------------------
		echo.
	)
)

endlocal
exit /b 0
Result.txt
Код: Выделить весь код
[C:\Мои проекты\0218\0001.reg]:
---------------------------------
Ошибка: Указанный файл не является файлом реестра. Поддерживается импорт только файлов
реестра.
---------------------------------

[C:\Мои проекты\0218\0002.reg]:
---------------------------------
Ошибка: Ошибка при доступе к реестру.
---------------------------------

[C:\Мои проекты\0218\0003.reg]:
---------------------------------
Ошибка: Ошибка при доступе к реестру.
---------------------------------

[C:\Мои проекты\0218\0004.reg]:
---------------------------------
Операция успешно завершена.

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

Отправлено: 14:28, 17-11-2018 | #9


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


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

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


У меня доступ к ключу закрыт.

Ничего не вносится. Но пишет "Операция успешно завершена".

ХР-система.

Отправлено: 14:34, 17-11-2018 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Установка - [решено] Удаление записи в реестре, посредством файла *.REG turan101 Microsoft Windows 2000/XP 1 28-04-2015 11:17
Установка - Тихая установка файла с расширением .reg Эльдарик Microsoft Windows 7 0 20-08-2014 13:05
CMD/BAT - Автозапуск сетевого reg файла? smol84 Скриптовые языки администрирования Windows 5 22-11-2011 14:06
[решено] Импорт .reg файла apozlevich AutoIt 2 17-11-2011 09:35
запуск reg-файла под администраторскими правами XPurple Microsoft Windows NT/2000/2003 3 18-11-2005 10:44




 
Переход