Войти

Показать полную графическую версию : [решено] Возвращаемые значение "консольной" версии WinRar


FlatX007
06-08-2009, 09:09
Цитата из мануала WinRar
В случае успешного окончания операции WinRAR завершает работу с нулевым (0) кодом возврата. Если код возврата отличается от нулевого, это говорит о том, что произошла какая-то ошибка.

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

WinRAR a -r Pictures.rar Bitmaps

Petya V4sechkin
06-08-2009, 09:12
FlatX007, к переменной ErrorLevel

FlatX007
06-08-2009, 09:29
те на практике это выглядит так ? (я наверно опять чёто перепутал :( )

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

Petya V4sechkin
06-08-2009, 10:00
FlatX007, а вы в командной строке наберите:
if /?

FlatX007
06-08-2009, 10:33
Ну да это я из програмирования сунул строчку :)

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

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

Iska
06-08-2009, 11:51
FlatX007, не разобрались, условие:
IF ERRORLEVEL 0 Exit
будет истинным всегда, поскольку в данном виде инструкции 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
Это вообще для 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
FlatX007, в этом случае да, сие несущественно. А в пакетных файлах, в случае разветвлённой обработки, иногда даже приходится предварительно запоминать значение переменной %errorlevel% в другой переменной и уже потом сравнивать, поскольку переменная %errorlevel% может быть переопределена уже в процессе этой самой обработки.




© OSzone.net 2001-2012