Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/810: Рейтинг темы: голосов - 810, средняя оценка - 4.90
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16

Коды возврата ошибок (расшифровки ErrorLevel)*

20.12.2012, 22:21. Показов 172859. Ответов 33

Студворк — интернет-сервис помощи студентам
Коды возврата ошибок (встроенных команд и других программ)

Как получить код возврата

Для новичков - очень подробно расписано в теме: Выполнение действия, если операция копирования прошла неуспешно

Порядок получения код возврата
Запускаем приложение, следующей командой проверяем переменную %ErrorLevel%. Есть еще такие варианты написания.
Например,
Bash
1
2
3
4
::Упаковать все документы
rar.exe a arch.rar *.doc
::Вывести на экран код возврата
Echo %ErrorLevel%
Не забываем, что внутри скобок и под циклом ErrorLevel можно получить только включив отложенное расширение переменных среды:
Bash
1
2
3
4
5
Setlocal EnableDelayedExpansion
(
  copy /y *.doc d:\*.*
  if !errorlevel!==0 Echo Operation Successful
)
В языках высокого уровня код возврата можно получить API функцией:

GetExitCodeProcess
GetExitCodeThread

А задать код при выходе из программы с помощью функций:

ExitProcess
ExitThread

либо указав число, которое вернет основная функция,
например main в C++:
Code
1
return 5;
или в AutoIt:
Code
1
Exit 5


Как сгенерировать код возврата


В Batch:
1. Выполнив команду, которая возвращает Errorlevel, например: cmd /c exit /b 5
где 5 - произвольный код в пределах от -2147483648 до +2147483647

В языках высокого уровня код возврата можно сгенерировать API функцией:
ExitProcess - http://msdn.microsoft.com/en-u... s.85).aspx
при этом приложение будет завершено.

Дополнение от Alterex на счет set ErrorLevel=



Общепринятые коды возврата консольных команд DWORD-коды
Преобразование текста ошибок в пользовательский код возврата.

Перечень ErrorLevel в этой теме:

WinRAR (rar.exe)
cmd.exe
copy
xcopy

RoboCopy
ARJ32/Console
7-Zip
msiexec, WMIC
WGET
ping
Windows Scripting Host
FC
Ошибки, возвращаемые FTP-сервером
2
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.12.2012, 22:21
Ответы с готовыми решениями:

Параноя возврата ошибок. Стоит ли проверять каждое действие? Когда останавливаться?
Если... если..если.. Партянка будет длинной.. Например, через 10 лет села батарейка-системная дата будет сбита. Мне надо прописывать...

Коды ошибок аэрогриль POLARIS pag 1205d, У кого есть коды ошибок на аэрогриль POLARIS
аэрогриль POLARIS pag 1205d ошибка e1 че значит?

Коды возврата
Код возврата 2. Причина: ошибки работы встроенных средств оболочки. Мой вопрос: какие есть у оболочки встроенные средства? Код возврата...

33
 Аватар для Badger
94 / 94 / 4
Регистрация: 25.06.2012
Сообщений: 278
18.01.2013, 17:38
А как можно подглядеть возвращаемые командами коды ошибок errorlevel?
В разделе Предложения по совершенствованию увидел только что планируется выложить данную инфу, как успехи?)
0
1781 / 763 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
18.01.2013, 21:05
Badger, тыц
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
18.01.2013, 21:13  [ТС]
sov44, ну там не так много.

Это наверное больше вопрос ко мне, что надо бы развивать тему, раз предложил =)
Badger, все это время, готового не находил по встроенным командам (ай-да и не искал).
Если что найдете, выкладываем. Пока информации 0. Есть только по другим (внешним) программам, вроде WinRAR.

А для тестирования вручную нужно готовить среду, чтобы испытать команды в разных ситуациях (то ли это нехватка прав, работа с заблокированным объектом) и т.д.

По другой предложенной темы (ключи) инфы довольно много.
1
 Аватар для Badger
94 / 94 / 4
Регистрация: 25.06.2012
Сообщений: 278
21.01.2013, 14:41
Цитата Сообщение от sov44 Посмотреть сообщение
тыц
Улыбнули Не видел еще такого.
Цитата Сообщение от Dragokas Посмотреть сообщение
Если что найдете, выкладываем.
Поищем.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
22.01.2013, 02:56  [ТС]
Ну что же начнем собирать.

Архиватор WinRAR
rar.exe

Код возврата
Описание
0Операция успешно завершена.
1Предупреждение. Произошли некритические ошибки.
2Произошла критическая ошибка.
3Неверная контрольная сумма CRC32. Данные повреждены.
4Предпринята попытка изменить заблокированный архив.
5Произошла ошибка записи на диск.
6Произошла ошибка открытия файла.
7Ошибка при указании параметра в командной строке.
8Недостаточно памяти для выполнения операции.
9Ошибка при создании файла.
10Нет файлов, удовлетворяющих указанной маске, и параметров.
255Операция была прервана пользователем.
3
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
22.01.2013, 19:43
"VERIFY dummy_text" will set %ERRORLEVEL% to 1
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
22.01.2013, 20:05  [ТС]
Charles Kludge, все равно не понял как она работает.
Написано, что по-умолчанию - выключена.
Т.е. ключ /V в Copy
Bash
Copy /V file1 file2
"временно включет проверку" результата записи и возвращает некий ненулевой ErrorLevel в случае провала.
На чем бы проверить? - может, флешку вытянуть в процессе записи...
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
22.01.2013, 22:11
Common command / program exit codes / error levels
0 Успешное завершение/Program suseccfully completed.
1 Некорректная ф-ция/Incorrect function.
2 Файл не найден/The system cannot find the file specified.
3 Путь не найден/The system cannot find the path specified.
5 Доступ запрещён/Access is denied. Нет прав доступа к ресурсу.
9009./ 0x2331 программа не распознана как внутренняя или внешняя команда или батник/Program is not recognized as an internal or external command, operable program or batch file.
3221225477. 0xC0000005 Ошибка доступа/Access violation. Некорректное завершение или крах.
3221225495. 0xC0000017 Закончилась виртуальная память/Not enough virtual memory is available.
3221225786. 0xC000013A Приложение завершено по CTRL+C/The application terminated as a result of a CTRL+C.
3221225794. 0xC0000142 Ошибка инициализации приложения/The application failed to initialize properly. Обычно возникает при попытке запуска приложения (через иконку на десктопе), на которое у юзверя нет прав. Другая причина - ошибка инициализации gdi32.dll или user32.dll.
3221226505. 0xC0000409 Переполнение стека/Stack buffer overflow / overrun. Критическая ошибка в самом приложении.
3221225725. 0xC00000FD Стек исчерпан/Stack buffer underrun. Критическая ошибка в самом приложении.
3
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
22.01.2013, 22:18  [ТС]
Ок, Charles Kludge, исправился. Раз некоторые приложения для кода возврата выделяют буфер DWORD,
думаю, будет нелишним опубликовать и такие значения:

cmd.exe

Код Oct из DWORD
Описание
-4294958287программа не распознана как внутренняя или внешняя команда или батник/Program is not recognized as an internal or external command, operable program or batch file.
-1073741819Ошибка доступа/Access violation. Некорректное завершение или крах.
-1073741801Закончилась виртуальная память/Not enough virtual memory is available.
-1073741510Приложение завершено по CTRL+C (или принудительное завершение работы интерпретатора)/The application terminated as a result of a CTRL+C.
-1073741502Ошибка инициализации приложения/The application failed to initialize properly.Обысно возникает при попытке запуска приложения(через иконку на десктопе) на которое у юзверя нет прав. Другая причина - ошибка инициализации gdi32.dll или user32.dll.
-1073740791Переполнение стека/Stack buffer overflow / overrun. Критическая ошибка в самом приложении.
-1073741571Стек исчерпан/Stack buffer underrun. Критическая ошибка в самом приложении.
ПроизвольныйКод, заданный пользователем в команде Exit /B [code]
2
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
22.01.2013, 22:26
Dragokas, это и есть 0xC000013A, см выше.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
22.01.2013, 22:32  [ТС]
Почему значения не совпали?
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
22.01.2013, 22:38
Дык, совпали. Копипастим в calc, смотрим в hex, младший dword.
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
22.01.2013, 22:49  [ТС]
Ясно, значит у меня ответ вернуло 2-байтовый. FFFFFFFFC000013A.

P.S. Тестировал через
Visual Basic
1
Msgbox CreateObject("WScript.Shell").Run("cmd /c pause", 1, True)
0
22.01.2013, 22:54

Не по теме:

Видать, индусы поняли, чтобы возвращать DWORD, придётся писать очередной костыль и забили.:jokingly:

0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
23.01.2013, 01:47  [ТС]
Провел небольшой тест.

Развернуть код
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
@echo off
Setlocal EnableDelayedExpansion
set flash=f:
set videofile=Cougar.Town.S01E01.rus.LostFilm.TV.avi
 
Echo Тест успешного копирования
copy nul nul
echo errorlevel %errorlevel%
Echo Тест копирования в защищенную правами папку
cmd /c copy c:\test.log c:\Windows\kmsem\1.log
echo errorlevel %errorlevel%
Echo Тест копирования несуществующего файла
cmd /c copy abracadabra L:\*.*
echo errorlevel %errorlevel%
verify off
if exist %flash%\%videofile% (
  del %flash%\%videofile%& ping 127.1>nul
)
Echo Тест копирования через XCOPY прав доступа ACL без административных привилегий
XCOPY /O i:\%videofile% %flash%\
echo errorlevel %errorlevel%
echo.
Echo Тест копирования видеофайла (268 MB) на флеш
Set STime=%time%
copy i:\%videofile% %flash%\
echo errorlevel %errorlevel%
Set ETime=%time%
Call :TimeElapsed "%STime%" "%ETime%" ret
Echo Прошло: %ret% с.
del %flash%\%videofile%
ping 4 127.1>nul
Set STime=%time%
Echo Тест копирования видеофайла (268 MB) на флеш с верификацией записи
copy /v i:\%videofile% %flash%\
echo errorlevel %errorlevel%
Set ETime=%time%
Call :TimeElapsed "%STime%" "%ETime%" ret
Echo Прошло: %ret% с.
pause
goto :eof
 
 
:TimeElapsed %1-StartTime %2-EndTime %3-var_result
Call :TimeToMSec "%~1" TimeS_ms
Call :TimeToMSec "%~2" TimeE_ms
Set /A diff=TimeE_ms-TimeS_ms
Set /A diffSS=diff/100
Set /A diffms=%diff% %% 100
Set %3=%diffSS%,%diffms%
Exit /B
 
:TimeToMSec %1-Time 2-var_mSec
For /F "Tokens=1-4 Delims=,:" %%A in ("%~1") do (
  Set /A HH=%%A
  Set MM=1%%B& Set /A MM=!MM!-100
  Set SS=1%%C& Set /A SS=!SS!-100
  Set mS=1%%D& Set /A mS=!mS!-100
)
Set /A %~2=(HH*60*60+MM*60+SS)*100+mS
Exit /B


Один раз получил странную ошибку. Copy скопировала файл, после чего написала, что "я такого имени не знаю..." =)) Error 9009

По итогам +Errorlevel:

xcopy

Код
Описание
0 Успешное завершение/Program suseccfully completed.
4 Файл не найден/The system cannot find the file specified.
4 Доступ запрещён/Access is denied. Нет прав доступа к ресурсу.
4 Невозможно скопировать файл поверх самого себя/The file cannot be copied onto itself
errorlevel = 0, даже, если пользователь ответил "Не заменять файл".

Также видим, что в случаях с защищенной правами папкой или когда файл не существует
мы получаем Errorlevel 1 (а не ожидаемые дефолтовые 5 и 2 соответственно).

copy

Код
Описание
0 Успешное завершение/Program suseccfully completed.
1 Файл не найден/The system cannot find the file specified.
1 Доступ запрещён/Access is denied. Нет прав доступа к ресурсу.
1 Невозможно скопировать файл поверх самого себя/The file cannot be copied onto itself
errorlevel = 0, даже если пользователь ответил "Не заменять файл"
Чтобы консоль задала этот вопрос:
1) для одиночного файла нужно указать ключ /-y
Bash
copy /-y file h:\
2) для маски файлов работает по-умолчанию. Обратная операция - "принудительная замена": ключ /y
Bash
Copy /y *.cmd h:\
Сравнение copy с verify off
1) без ключа
2) с ключем /v
показало, что в большинстве случаев с верификацией для копирования файла в ~250 МБ затрачивается на ~1,5 сек. больше времени. Не знаю, что именно оно проверяет, но уж файл точно целиком не считывается.
Миниатюры
Коды возврата ошибок (расшифровки ErrorLevel)*   Коды возврата ошибок (расшифровки ErrorLevel)*  
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
28.01.2013, 18:37  [ТС]
Из предыдущего поста видно, что команда copy возвращает только коды 0, 1,
что есть совсем не айс.

Я написал надстройку, которая согласовывает ошибки согласно таблице, приведенной Charles Kludge.
Естественно, это просто демо, экспериментальный набросок кода.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Echo Off
Setlocal EnableDelayedExpansion
set src=c:\setup.log
set dest=%windir%\system32
 
for /f "delims=" %%A in ('cmd /v:on /c "copy "%src%" "%dest%" 1^>nul 2^>^&3 ^&Echo ^!ErrorLevel^!"') do (
  Set StdErr=!Err!
  Set Err=%%A
)
if "%Err%" neq "0" (
  Echo.%StdErr%|>nul Find "Отказано в доступе"&& Set Err=5
  Echo.%StdErr%|>nul Find "Access is denied"&& Set Err=5
  Echo.%StdErr%|>nul Find "Не удается найти указанный файл"&& Set Err=2
  Echo.%StdErr%|>nul Find "The system cannot find the file specified"&& Set Err=2
  Echo.%StdErr%|>nul Find "Ошибка в синтаксисе команды"&& Set Err=1
  Echo.%StdErr%|>nul Find "The syntax of the command is incorrect"&& Set Err=1
)
if not Defined Err Set Err=1&::Default Errorlevel for the wrong Syntax
 
Set Errorlevel=%Err%
Echo ErrorLevel of the Last Copy operation is = %Errorlevel%
Echo.
pause
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
21.02.2013, 20:53  [ТС]
Robocopy
HexDecimalMeaning
0×10 16 Serious error. Robocopy did not copy any files.
 Either a usage error or an error due to insufficient access privileges
 on the source or destination directories.
0×08 8 Some files or directories could not be copied
 (copy errors occurred and the retry limit was exceeded).
 Check these errors further.
0×04 4 Some Mismatched files or directories were detected.
 Examine the output log. Some housekeeping may be needed.
0×02 2 Some Extra files or directories were detected.
 Examine the output log for details.
0×01 1 One or more files were copied successfully (that is, new files have arrived).
0×00 0 No errors occurred, and no copying was done.
 The source and destination directory trees are completely synchronized.

Таким Batch-файлом получим короткое описание ошибок.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    if errorlevel 16 echo ***FATAL ERROR*** & goto end
    if errorlevel 15 echo OKCOPY + FAIL + MISMATCHES + XTRA & goto end
    if errorlevel 14 echo FAIL + MISMATCHES + XTRA & goto end
    if errorlevel 13 echo OKCOPY + FAIL + MISMATCHES & goto end
    if errorlevel 12 echo FAIL + MISMATCHES& goto end
    if errorlevel 11 echo OKCOPY + FAIL + XTRA & goto end
    if errorlevel 10 echo FAIL + XTRA & goto end
    if errorlevel 9 echo OKCOPY + FAIL & goto end
    if errorlevel 8 echo FAIL & goto end
    if errorlevel 7 echo OKCOPY + MISMATCHES + XTRA & goto end
    if errorlevel 6 echo MISMATCHES + XTRA & goto end
    if errorlevel 5 echo OKCOPY + MISMATCHES & goto end
    if errorlevel 4 echo MISMATCHES & goto end
    if errorlevel 3 echo OKCOPY + XTRA & goto end
    if errorlevel 2 echo XTRA & goto end
    if errorlevel 1 echo OKCOPY & goto end
    if errorlevel 0 echo No Change & goto end
    :end
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
23.03.2013, 15:27
ARJ32/Console
Hex Dec
Meaning
0 0 Успешно/Success
11Предупреждение(указанный файл для добавления/листа/экстракта не найден
22Фатальная ошибка
33Ошибка СRC(заголовок/файл или неверный пароль)
44Ошибка ARJ-SECURITY или попытка обновить ARJ-SECURED архив
55Диск полон или ошибка записи
66Невозможно открыть архив или файл
77simple user error - неверные параметры ком. строки(Юзер тупорылый)
88НЕПАМ - мало памяти
99Не ARJ-архив
0xA10Ошибка XMS/DPMI-чтение/запись
0xB11Юзер нажал <Ctrl/C>
0xC12too many chapters (over 250)/Слишком много глав/томов в многотомном архиве
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
13.04.2013, 17:42  [ТС]
Архиватор 7-Zip

Dec
Обозначение
0 Нет ошибок
1 Предупреждение (Не фатальная ошибка(и)).
 Например, один или более файлов были блокированы другим приложением, таким образом, они не были сжаты.
2 Фатальная ошибка
7 Ошибка командной строки
8 Недостаточно памяти для операции
255 Пользователь остановил процесс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.04.2013, 17:42
Помогаю со студенческими работами здесь

Коды возврата.
#!/bin/bash foo() { if ; then echo &quot;Yes&quot; fi return 0 }

Коды ошибок, Коды ошибок для пользователей (не для мастеров)
ОшибкаПричинаE10проблемы подачи воды. Проверьте не закрыт ли кран, не забита ли сеточка, достаточно ли давление, не подключен ли сливной...

Коды ошибок, Аркади
Суб коды ошибок аркадии

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

Коды ошибок в BAss
Всем привет. Кто знает как исправить ошибки Error codes list 0 BASS_OK 1 BASS_ERROR_MEM 2 BASS_ERROR_FILEOPEN 3...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru