CMD/BAT - [решено] Возвращаемые значение "консольной" версии WinRar

Ответить
Аватара пользователя
FlatX007

CMD/BAT - [решено] Возвращаемые значение "консольной" версии WinRar

Сообщение FlatX007 »

Цитата из мануала WinRar

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



Допустим простой пример (в нём упаковываются файлы).

При удачном выполнении должен вернутся ноль , к какой переменной обращатся чтобы получить этот ноль ? непонятна .... Изображение





Код:

Код: Выделить всё

WinRAR a -r Pictures.rar Bitmaps
Аватара пользователя
FlatX007

Re: CMD/BAT - [решено] Возвращаемые значение "консольной" версии WinRar

Сообщение FlatX007 »

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





Код:

Код: Выделить всё

WinRAR a -r Pictures.rar Bitmaps
if %ErrorLevel% = 0 Then rd %tmp% /s /q
Аватара пользователя
Petya V4sechkin

Re: CMD/BAT - [решено] Возвращаемые значение "консольной" версии WinRar

Сообщение Petya V4sechkin »

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



Код:
Аватара пользователя
FlatX007

Re: CMD/BAT - [решено] Возвращаемые значение "консольной" версии WinRar

Сообщение FlatX007 »

Ну да это я из програмирования сунул строчку Изображение





Код:

Код: Выделить всё

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

Вроде разобрался ...
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Возвращаемые значение "консольной" версии WinRar

Сообщение Iska »

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



Код:

Код: Выделить всё

IF ERRORLEVEL 0 Exit

будет истинным всегда[/i], поскольку в данном виде инструкции IF сравнение идёт не на равенство, а на «больше или равно»:


Цитата if /?:



IF [NOT] ERRORLEVEL число команда



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



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



Код:

Код: Выделить всё

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

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



Код:

Код: Выделить всё

WinRAR a -r Pictures.rar Bitmaps
IF %errorlevel% equ 0 (
    Exit
) ELSE (
    IF %errorlevel% equ 1 call :ProcessError1
)
Аватара пользователя
FlatX007

Re: CMD/BAT - [решено] Возвращаемые значение "консольной" версии WinRar

Сообщение FlatX007 »

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



У меня переменная в скрипте возвращает значение и всё.

Возможно не сюда но раз уж зашла речь





Код:

Код: Выделить всё

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

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

Re: CMD/BAT - [решено] Возвращаемые значение "консольной" версии WinRar

Сообщение Iska »

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

Вернуться в «Скриптовые языки администрирования Windows»