Войти

Показать полную графическую версию : Удаление пераметра реестра если bat файл запущен в Безопасном режиме


Sfero_ID
04-06-2013, 23:21
Нужен совет:
Необходимо удалить параметр реестра и при этом вывести сообщение1 если параметр найден и удалён, или сообщение2 если параметр не существует.
Также, подскажите, как остановить выполнение bat файла, если Windows загружена не в Безопасном режиме?

Georgio
04-06-2013, 23:49
@ECHO OFF
(REG DELETE "HKCU\Software\*****" /V "***" /F 2>nul&&ECHO Message 1)||ECHO Message 2
PAUSE>nul



CMD/BAT - Удаление пераметра реестра если bat файл запущен в Безопасном режиме »

Также, подскажите, как остановить выполнение bat файла, если Windows загружена не в Безопасном режиме? »


???

Sfero_ID
05-06-2013, 01:20
Суть в том, что параметр реестра удаляется, только в безопасном режиме: возможно ли, если bat файл запущен в обычном режиме Windows, вывести сообщение об этом?

Georgio
05-06-2013, 02:03
Думаю, что, если по какой-либо причине параметр или раздел реестра не могут быть в данный момент удалены, то в командной строке будет такое сообщение, и вставлять команду в BAT-файл для вывода в этом случае своего какого-нибудь сообщения не имеет смысла.


Чтобы увидеть такое сообщение, если оно будет, просто убираем из кода 2>nul:

@ECHO OFF
(REG DELETE "HKCU\Software\*****" /V "***" /F&&ECHO Message 1)||ECHO Message 2
PAUSE>nul

.

Iska
05-06-2013, 05:06
Я вообще не вижу смысла в:
вывести сообщение1 если параметр найден и удалён, или сообщение2 если параметр не существует. »
поскольку конечный результат и в том, и в другом случае одинаков. Бессмысленно.

Вот если параметр существует, но удалить не удалось — тогда другое дело.

Sfero_ID
05-06-2013, 14:50
Вот если параметр существует, но удалить не удалось — тогда другое дело. »

Согласен, немного не так сформулировал... Параметр удалится только в Безопасном режиме, поэтому и нужно сообщение о запуске bat файла в безопасном режиме. А как тогда сделать сообщение1, если параметр удалён или не существует, и сообщение2, если параметр существует, но удалить его не удалось?

Или проще:
возможно ли, если bat файл запущен в обычном режиме Windows, вывести сообщение об этом? »

Iska
05-06-2013, 15:25
Sfero_ID, например, так (Win32_ComputerSystem class (Windows) (http://msdn.microsoft.com/en-us/library/windows/desktop/aa394102(v=vs.85).aspx)):
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (
`wmic.exe ComputerSystem get BootupState /value ^| find.exe "BootupState"`
) do set s%%i

if defined sBootupState (
if "%sBootupState%" equ "Normal boot" (
echo Normal boot mode
) else (
echo A one of Safe boot modes
)
)

endlocal
exit /b 0

Я, правда, не проверял — отработает ли сама утилита «wmic.exe» в безопасном режиме.




© OSzone.net 2001-2012