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

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

FlatX007 06-08-2009 09:09 1186851

Возвращаемые значение "консольной" версии WinRar
 
Цитата из мануала WinRar
В случае успешного окончания операции WinRAR завершает работу с нулевым (0) кодом возврата. Если код возврата отличается от нулевого, это говорит о том, что произошла какая-то ошибка.

Допустим простой пример (в нём упаковываются файлы).
При удачном выполнении должен вернутся ноль , к какой переменной обращатся чтобы получить этот ноль ? непонятна .... :search:

Код:

WinRAR a -r Pictures.rar Bitmaps

Petya V4sechkin 06-08-2009 09:12 1186854

FlatX007, к переменной ErrorLevel

FlatX007 06-08-2009 09:29 1186864

те на практике это выглядит так ? (я наверно опять чёто перепутал :( )

Код:

WinRAR a -r Pictures.rar Bitmaps
if %ErrorLevel% = 0 Then rd %tmp% /s /q


Petya V4sechkin 06-08-2009 10:00 1186891

FlatX007, а вы в командной строке наберите:
Код:

if /?

FlatX007 06-08-2009 10:33 1186923

Ну да это я из програмирования сунул строчку :)

Код:

WinRAR a -r Pictures.rar Bitmaps
IF ERRORLEVEL 0 Exit

Вроде разобрался ...

Iska 06-08-2009 11:51 1187008

FlatX007, не разобрались, условие:
Код:

IF ERRORLEVEL 0 Exit
будет истинным всегда, поскольку в данном виде инструкции IF сравнение идёт не на равенство, а на «больше или равно»:
Цитата:

Цитата if /?
IF [NOT] ERRORLEVEL число команда

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

Тут надо либо в обратном порядке, наподобие:
Код:

IF ERRORLEVEL 2 Goto :label1
IF ERRORLEVEL 1 Goto …
rem ERRORLEVEL 0

GOTO :EOF

:label1

GOTO :EOF

либо, как Вы и пробовали, использовать переменную окружения %errorlevel% (при включённой расширенной обработке команд [по умолчанию — включена]), только в несколько ином виде, наподобие:
Код:

WinRAR a -r Pictures.rar Bitmaps
IF %errorlevel% equ 0 (
    Exit
) ELSE (
    IF %errorlevel% equ 1 call :ProcessError1
)


FlatX007 06-08-2009 13:29 1187102

Это вообще для AutoIT у меня нет строчек "IF ERROR...ля ля " это я просто тестировал чтоб суть понять (если написать коды ошибок по убыванию то всё работает яж проверял)

У меня переменная в скрипте возвращает значение и всё.
Возможно не сюда но раз уж зашла речь

Код:

#Include <Process.au3>

$RunDos = _RunDOS(@TempDir & '\' & 'Rar.exe a -k -EP1 ' & $BakForFilesGameDir & '\' & $NameArchiveBakSXE & '.rar' & ' ' & $SXEPaсh)

Переменная $RunDos возвращает цифровой код остальные переменные от балды они содержать путь...

Iska 06-08-2009 17:11 1187298

FlatX007, в этом случае да, сие несущественно. А в пакетных файлах, в случае разветвлённой обработки, иногда даже приходится предварительно запоминать значение переменной %errorlevel% в другой переменной и уже потом сравнивать, поскольку переменная %errorlevel% может быть переопределена уже в процессе этой самой обработки.


Время: 01:10.

Время: 01:10.
© OSzone.net 2001-