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

Тема в разделе "Пакетные файлы CMD, BAT", создана пользователем Kиpилл, 7 окт 2014.

  1. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    Привет народ!

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

    Код (DOS):
    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 не останвливается а переходит к
    Код (DOS):
    echo Для выхода нажмите клавишу ENTER
            pause>nul
            echo tut
            GOTO Exite
     
  2. Dragokas
    Онлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.499
    Симпатии:
    4.313
    Зачем тебе LEQ (<=) ? Обычно проверяют на неравенство нулю (NEQ).

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


    Код (DOS):

    @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
     
     
    glax24 и Kиpилл нравится это.
  3. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    Ага.
    так работает,использовал dism так как он и так активно присутствует в новой версии.
     
  4. Dragokas
    Онлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.499
    Симпатии:
    4.313
    Для чего использовал?
     
  5. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    Готовлю обновление sfcheker ,решил кое что поменять,разбавить системное логирование,добавить пару новшеств,кумекаю как вывести отчет для хр... в общем занятное дело... с разрабом что ты говорил связался но пока ноль ответов.
     
  6. Dragokas
    Онлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.499
    Симпатии:
    4.313
    Заметил, что он берет для парсинга не только SFC.log ?
    Не планируешь ли что-нибудь похожее для облегчения разбора?
     
  7. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    да ,лог уже будет более читабелен+отдельный парсер логирования системы и cbs

    не поверишь - столько головы сломал а справка брешет...вместо этой команды восьмерка кушает EQU
     
  8. Dragokas
    Онлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.499
    Симпатии:
    4.313
    Код (Text):
    if /?
     
  9. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    да,я про эту справку.
    ос вин 8.1
    думал я совсем отупел,а там вон оно как...
     

Поделиться этой страницей