Ошибка блока if ... else

Кирилл

Команда форума
Администратор
Ассоциация VN
Сообщения
14,315
Реакции
6,313
Привет народ!

Что то упускаю,не подскажете?

CMD/BATCH:
reg add hkcr\test.associatoon /f
IF %ERRORLEVEL% LEQ 0 (
        REG DELETE hkcr\test.associatoon /f
        echo. >%windir%\Logs\CBS\sfcheker.log
        echo ::::::::  %Userprofile%  :::::::: >>%windir%\Logs\CBS\sfcheker.log
        echo ::::::::  %DATE%  :::::::: >>%windir%\Logs\CBS\sfcheker.log
        echo ::::::::  %VERSION%  :::::::: >>%windir%\Logs\CBS\sfcheker.log
        echo. >>%windir%\Logs\CBS\sfcheker.log
        echo. >>%windir%\Logs\CBS\sfcheker.log
        echo ::::::::::::::::::::::::::::::::::::::::::::::::::::: >>%windir%\Logs\CBS\sfcheker.log
        echo. >>%windir%\Logs\CBS\sfcheker.log
        echo ... Права Администратора получены...  >> %windir%\Logs\CBS\sfcheker.log
            echo elevate good
            Exit /b    ) else (
            Echo Требуются права Администратора.
        Echo.
        echo Необходимо запустить скрипт от имени Администратора
        echo ^(^Правой кнопкой мыши по файлу - пункт запустить от имени Администратора^)^
        echo.
        echo Для выхода нажмите клавишу ENTER
        pause>nul
        echo tut
        GOTO Exite )

Проблема в том что если errolevel = 0 то первая часть выполняется,но на else не останвливается а переходит к
CMD/BATCH:
echo Для выхода нажмите клавишу ENTER
        pause>nul
        echo tut
        GOTO Exite
 

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,782
Реакции
6,244
Зачем тебе LEQ (<=) ? Обычно проверяют на неравенство нулю (NEQ).

Помести %windir%\Logs\CBS\sfcheker.log в переменную.
Код станет на много короче.
Ты делаешь запись в реестр ради проверки прав? Это неправильно.
Используй команду, которая не запускается без привилегий, например net session.
+ Сделай через подпрограмму:


CMD/BATCH:
@echo off
set log=%windir%\Logs\CBS\sfcheker.log
call :CheckAdmin
goto :eof

:CheckAdmin
net session >NUL 2>NUL && (
    >> "%log%" (
    echo.
    echo ::::::::  %Userprofile%  ::::::::
    echo ::::::::  %DATE%  ::::::::
    echo ::::::::  %VERSION%  ::::::::
    echo.
    echo.
    echo :::::::::::::::::::::::::::::::::::::::::::::::::::::
    echo.
    echo ... Права Администратора получены...
    echo elevate good
    )
) || (
    Echo Требуются права Администратора.
    Echo.
    echo Необходимо запустить скрипт от имени Администратора
    echo ^(Правой кнопкой мыши по файлу - пункт "Запустить от имени Администратора"^)
    echo.
    echo Для выхода нажмите клавишу ENTER
    pause>nul
)
exit /B
 

Кирилл

Команда форума
Администратор
Ассоциация VN
Сообщения
14,315
Реакции
6,313
Ага.
Ты делаешь запись в реестр ради проверки прав? Это неправильно.
Используй команду, которая не запускается без привилегий, например net session.
+ Сделай через подпрограмму:
так работает,использовал dism так как он и так активно присутствует в новой версии.
 

Кирилл

Команда форума
Администратор
Ассоциация VN
Сообщения
14,315
Реакции
6,313
Готовлю обновление sfcheker ,решил кое что поменять,разбавить системное логирование,добавить пару новшеств,кумекаю как вывести отчет для хр... в общем занятное дело... с разрабом что ты говорил связался но пока ноль ответов.
 

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,782
Реакции
6,244
Заметил, что он берет для парсинга не только SFC.log ?
Не планируешь ли что-нибудь похожее для облегчения разбора?
 

Кирилл

Команда форума
Администратор
Ассоциация VN
Сообщения
14,315
Реакции
6,313
Не планируешь ли что-нибудь похожее для облегчения разбора?
да ,лог уже будет более читабелен+отдельный парсер логирования системы и cbs

Обычно проверяют на неравенство нулю (NEQ).
не поверишь - столько головы сломал а справка брешет...вместо этой команды восьмерка кушает EQU
 
Сверху Снизу