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

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

fancytux 25-04-2009 06:22 1103614

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

lxa85 25-04-2009 07:54 1103631

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

Цитата:

Цитата fancytux
errorlevel 0 »

это условие которое проверяется на правдивость. Условие ветвление алгоритма.
Цитата:

Цитата fancytux
goto k »

Перейти к метке k. Это оператор безусловного перехода. Т.е. знать не знаю, а надо перейти к выполнению программы с метки k.

Busla 25-04-2009 12:11 1103739

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

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

amel27 25-04-2009 15:53 1103898

Цитата:

Цитата Busla
для этого строка должна быть записана иначе »

или так: "if Not ErrorLevel 1 GoTo k" :) (отрицательных ошибок вроде не бывает, хотя зависит от команды)
Цитата:

Цитата fancytux
как расшифровать »

если код ошибки предыдущей команды неотрицательный перейти к метке k

fancytux 26-04-2009 16:01 1104709

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

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

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

ang_mtg 17-05-2009 09:43 1120497

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

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

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

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

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

Maza11 15-01-2015 09:49 2456280

мне вот тоже интересно, есть 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 означает больше или равно

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

Iska 15-01-2015 14:42 2456424

Цитата:

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

Из документации, например.


Время: 05:17.

Время: 05:17.
© OSzone.net 2001-