Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Bat почему не работает вывод переменной %errorlevel% (http://forum.oszone.net/showthread.php?t=279084)

Eugene Shugaev 11-03-2014 19:31 2322191

Bat почему не работает вывод переменной %errorlevel%
 
Пишу программу и понадобился вывод информации о правах администратора, решил реализовать в виде:
......

:admin_test
echo Good start %time% -- %date% >> %windir%\system32\boot_usb_log.txt
if errorlevel 2 goto :admin_test_2
if errorlevel 1 goto :admin_test_1
:admin_test_2
goto :home
:admin_test_1
cls
echo *************ТРЕБУЮТСЯ ПРАВА АДМИНИСТРАТОРА*******************
goto :admin_test_bad

......
Но как bat не запускай ответ на level всегда 0, записало в log или нет, да пофиг все равно 0!!!!!
.....
:level
echo %errorlevel%
pause
goto :home
.....

Georgio 11-03-2014 19:59 2322213

Код:

echo Good start %time% -- %date% >> %windir%\system32\boot_usb_log.txt&& goto :admin_test_2|| goto :admin_test_1

Eugene Shugaev 11-03-2014 20:12 2322219

Georgio, Спасибо я решил проблему, НО можешь написать или обьяснить на примере использование получения кода ошибки и переход в зависимости от кода ошибки
Напиши пример где бы работал этот код
goto :admin_test_%errorlevel%
if errorlevel 2 goto :admin_test_2
if errorlevel 1 goto :admin_test_1

:admin_test_2
echo Все хорошо!!!
pause
goto :exit

:admin_test_1
echo Все плохо(((
pause
goto :exit

:exit
exit

gora 11-03-2014 20:50 2322237

Eugene Shugaev, попробуйте укоротить имена меток
Цитата:

Метка может включать пробелы, но не может включать другие разделители, такие как точка с запятой или знак равенства. В команде goto используются только первые восемь знаков метки. Например, следующие метки эквивалентны и рассматриваются как :hithere0:

:hithere0
:hithere01
:hithere02


Eugene Shugaev 11-03-2014 21:07 2322244

gora, Я сократил метки, но все равно посылает в :admin0

@echo off
title up_boot_usb v.0.2 # Creator Eugene Shugaev

echo Good start %time% -- %date% >> %windir%\system32\boot_usb_log.txt
echo %errorlevel%
pause
if "%errorlevel%"=="2" goto:admin2
if "%errorlevel%"=="1" goto:admin1
if "%errorlevel%"=="0" goto:admin0

:admin2
echo Все хорошо!!!
goto :exit

:admin1
echo Все плохо(((
goto :exit

:admin0
echo Сраный код равен %errorlevel%
goto :exit

:exit
pause
exit

gora 11-03-2014 21:11 2322246

Цитата:

Цитата Eugene Shugaev
но все равно посылает в :admin0 »

Очевидно, что у Вас %errorlevel% = 0

Eugene Shugaev 11-03-2014 21:15 2322249

gora, Это понятно что %errorlevel% = 0, но если процесс завершается ошибкой (отказом доступа) то должен быть код 1 говорящий о ошибке

gora 11-03-2014 21:44 2322263

Цитата:

Цитата Eugene Shugaev
но если процесс завершается ошибкой (отказом доступа) то должен быть код 1 говорящий о ошибке »

Я полагаю, что это не есть истина!
Думаю, что далеко не все команды в cmd устанавливают или сбрасывают значение переменной %errorlevel% и это как раз Ваш случай.

Iska 12-03-2014 06:04 2322401

Цитата:

Цитата Eugene Shugaev
но если процесс завершается ошибкой (отказом доступа) »

Какой процесс? У вас «pause», «echo» и «title».


Время: 15:26.

Время: 15:26.
© OSzone.net 2001-