Показать полную графическую версию : [решено] Возвращаемые значение "консольной" версии 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
Вроде разобрался ...
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 возвращает цифровой код остальные переменные от балды они содержать путь...
FlatX007, в этом случае да, сие несущественно. А в пакетных файлах, в случае разветвлённой обработки, иногда даже приходится предварительно запоминать значение переменной %errorlevel% в другой переменной и уже потом сравнивать, поскольку переменная %errorlevel% может быть переопределена уже в процессе этой самой обработки.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.