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

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

Ответить
Настройки темы
CMD/BAT - [решено] как расшифровать или для чего эта комманда if errorlevel 0 goto k ?

Аватара для fancytux

Пользователь


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


Конфигурация

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


как расшифровать или для чего эта комманда if errorlevel 0 goto k ?

Отправлено: 06:22, 25-04-2009

 

Аватара для lxa85

Необычный


Contributor


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

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


команда ветвления алгоритма.
Структура такая
if <условие> then(то) <действие1>
else(иначе) <действие2>
конструкция разнится в зависимости от язык программирования. Но в общем случае она верна. Действие1 выполняется если условие верно. Действие2, если задано, выполняется при невыполнении условия.
Например. Если Петя выше Маши, то идем в кино иначе идем в театр.
If Рост(Петя) > Рост(Маша) то идем(Кино) иначе идем(Театр).

Цитата fancytux:
errorlevel 0 »
это условие которое проверяется на правдивость. Условие ветвление алгоритма.
Цитата fancytux:
goto k »
Перейти к метке k. Это оператор безусловного перехода. Т.е. знать не знаю, а надо перейти к выполнению программы с метки k.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Последний раз редактировалось lxa85, 25-04-2009 в 20:21. Причина: орфография


Отправлено: 07:54, 25-04-2009 | #2



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

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


Ветеран


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

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


lxa85, это явный синтаксис batch-файла
"разница" - это существительное; глагол - "разнится"

fancytux, как расшифровать? - набрать в консоли help if, прочитать, потом help goto и тоже прочитать
если не вдаваться в подробности, то это пример "индийского" программирования: можно сократить до goto k - безусловный переход к метке k, т.к. условие всегда будет истинно. Однако можно предположить, что "программист" хотел переходить к метке k только в случае успешного выполнения предыдущей команды, для этого строка должна быть записана иначе:
IF %ERRORLEVEL% == 0 GOTO k

Последний раз редактировалось Busla, 25-04-2009 в 17:56.


Отправлено: 12:11, 25-04-2009 | #3


Googler


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

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


Цитата Busla:
для этого строка должна быть записана иначе »
или так: "if Not ErrorLevel 1 GoTo k" (отрицательных ошибок вроде не бывает, хотя зависит от команды)
Цитата fancytux:
как расшифровать »
если код ошибки предыдущей команды неотрицательный перейти к метке k

Последний раз редактировалось amel27, 25-04-2009 в 16:25.


Отправлено: 15:53, 25-04-2009 | #4


Аватара для fancytux

Пользователь


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

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


что то понял спасибо ) а почему именно метка K ?
я тут спрашивал как без программы удалить Alternate Data Streams файл , вот тут нашел -

echo data > "%SystemDrive%\Documents and Settings\Data:extended

ну в папке Data есть альтернативный поток extended , мне нужно его удалить , каким образом эта комманда его удаляет ?

Отправлено: 16:01, 26-04-2009 | #5


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


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

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


Автор не то, видимо, хотел спросить...

Любая программа, начиная с самых древних версий DOS при завершении работы выдает так называемый код завершения в виде числа. Какой именно - зависит от программиста, который эту программу написал. Обычно принято завершать программу с кодом 0, если она отработала без ошибок, и с кодами 1,2,3 и так далее, если были какие-либо ошибки.

Этот код завершения остается в памяти системы и может быть проанализирован в .BAT или .CMD-файле при помощи конструкции вида
IF ERRORLEVEL 0 GOTO K. Errorlevel - это "уровень ошибки". На человеческий язык переводится как "Если предыдущая команда выполнена без ошибки, идти на метку "к".

Внимание! Разбор ошибок идет именно по "уровню", а не по значению. Другими словами, IF ERRORLEVEL 2, то выражение будет истинно при коде завершения 2, 3, 4 и т.д., то есть >=2. Поэтому разборку кодов завершения надо делать по возрастающей начиная с 0.

Как правило, осмысленные коды завершения выдают утилиты командной строки, которые практически не ведут диалога с пользователем.

Отправлено: 09:43, 17-05-2009 | #6


Аватара для Maza11

Старожил


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

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


мне вот тоже интересно, есть BAT для обмена FTP программой FTPS от MoveIT!
Код: Выделить весь код
"C:\Program Files\MoveIT\FTPS.exe" -a -quiterror -e:on -d -password:xxxx  -user:xxxx -z -resume -s:"D:\Exite\in.lst" XX.XXX.XXX.XXX
if %ERRORLEVEL%==0 goto great
echo ftps returned error code: %ERRORLEVEL%
if %ERRORLEVEL%==3 goto out
if %ERRORLEVEL% GEQ 1 goto oops
echo Unknown File Transfer Problem
goto done
:oops
echo Error in File Transfer syntax
goto done
:out
echo An error occurred in the File Transfer
goto done
:great
echo The File Transfer completed successfully
:done
я понимаю что если отработало успешно то уровень 0 и выводим сообщение "The File Transfer completed successfully"
ну как они узнали что уровень3 это "Error in File Transfer syntax" и что такое GEQ 1 в "if %ERRORLEVEL% GEQ 1 goto oops"
p.s. нашел что GEQ означает больше или равно

вообщем какой командой узнавать у самой программы ее уровни ошибок и что они значат ?

Последний раз редактировалось Maza11, 15-01-2015 в 09:58.


Отправлено: 09:49, 15-01-2015 | #7


Ветеран


Contributor


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

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


Цитата Maza11:
я понимаю что если отработало успешно то уровень 0 и выводим сообщение "The File Transfer completed successfully"
ну как они узнали что уровень3 это "Error in File Transfer syntax" »
Из документации, например.

Отправлено: 14:42, 15-01-2015 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Для чего нужны dll библиотеки или Учимся редактировать dll Ban_vam_Dam Флейм 5 31-07-2009 17:41
Разное - [решено] Как расшифровать такое А_н_д_р_ей Программирование и базы данных 9 23-07-2009 01:45
Прочее - Для чего нужна эта розетка LRC Хочу все знать 6 21-02-2009 17:22
Разное - Путь к успеху или как чего-то добиться? Mr.Q Программирование и базы данных 1 19-10-2007 01:35
[решено] Как называется эта программа? AXELman4ever Хочу все знать 3 07-08-2007 11:31




 
Переход