Return code script windows

By default when a command line execution is completed it should either return zero when execution succeeds or non-zero when execution fails. When a batch script returns a non-zero value after the execution fails, the non-zero value will indicate what is the error number. We will then use the error number to determine what the error is about and resolve it accordingly.

Following are the common exit code and their description.

Not enough virtual memory is available.

It indicates that Windows has run out of memory.

Error Code Description
Program successfully completed.
1 Incorrect function. Indicates that Action has attempted to execute non-recognized command in Windows command prompt cmd.exe.
2 The system cannot find the file specified. Indicates that the file cannot be found in specified location.
3 The system cannot find the path specified. Indicates that the specified path cannot be found.
5 Access is denied. Indicates that user has no access right to specified resource.
Program is not recognized as an internal or external command, operable program or batch file. Indicates that command, application name or path has been misspelled when configuring the Action.
The application terminated as a result of a CTRL+C. Indicates that the application has been terminated either by the user’s keyboard input CTRL+C or CTRL+Break or closing command prompt window.
The application failed to initialize properly. Indicates that the application has been launched on a Desktop to which the current user has no access rights. Another possible cause is that either gdi32.dll or user32.dll has failed to initialize.

Error Level

The environmental variable %ERRORLEVEL% contains the return code of the last executed program or script.

By default, the way to check for the ERRORLEVEL is via the following code.


It is common to use the command EXIT /B %ERRORLEVEL% at the end of the batch file to return the error codes from the batch file.

EXIT /B at the end of the batch file will stop execution of a batch file.

Use EXIT /B at the end of the batch file to return custom return codes.

Environment variable %ERRORLEVEL% contains the latest errorlevel in the batch file, which is the latest error codes from the last command executed. In the batch file, it is always a good practice to use environment variables instead of constant values, since the same variable get expanded to different values on different computers.

Let’s look at a quick example on how to check for error codes from a batch file.


Let’s assume we have a batch file called Find.cmd which has the following code. In the code, we have clearly mentioned that we if don’t find the file called lists.txt then we should set the errorlevel to 7. Similarly, if we see that the variable userprofile is not defined then we should set the errorlevel code to 9.

Let’s assume we have another file called App.cmd that calls Find.cmd first. Now, if the Find.cmd returns an error wherein it sets the errorlevel to greater than 0 then it would exit the program. In the following batch file, after calling the Find.cnd find, it actually checks to see if the errorlevel is greater than 0.


In the above program, we can have the following scenarios as the output −

If the file c:\lists.txt does not exist, then nothing will be displayed in the console output.

If the variable userprofile does not exist, then nothing will be displayed in the console output.

If both of the above condition passes then the string “Successful completion” will be displayed in the command prompt.


In the decision making chapter, we have seen statements which have been executed one after the other in a sequential manner. Additionally, implementations can also be done in Batch Script to alter the flow of control in a program’s logic. They are then classified into flow of control statements.

S.No Loops & Description
1 While Statement Implementation

There is no direct while statement available in Batch Script but we can do an implementation of this loop very easily by using the if statement and labels.

The «FOR» construct offers looping capabilities for batch files. Following is the common construct of the ‘for’ statement for working with a list of values.

The ‘for’ statement also has the ability to move through a range of values. Following is the general form of the statement.

Following is the classic ‘for’ statement which is available in most programming languages.

Looping through Command Line Arguments

The ‘for’ statement can also be used for checking command line arguments. The following example shows how the ‘for’ statement can be used to loop through the command line arguments.



Let’s assume that our above code is stored in a file called Test.bat. The above command will produce the following output if the batch file passes the command line arguments of 1,2 and 3 as Test.bat 1 2 3.

S.No Loops & Description
1 Break Statement Implementation

The break statement is used to alter the flow of control inside loops within any programming language. The break statement is normally used in looping constructs and is used to cause immediate termination of the innermost enclosing loop.


/* steve jansen */

// another day in paradise hacking code and more

Windows Batch Scripting: Return Codes

Today we’ll cover return codes as the right way to communicate the outcome of your script’s execution to the world. Sadly, even skilled Windows programmers overlook the importance of return codes.

Return Code Conventions

By convention, command line execution should return zero when execution succeeds and non-zero when execution fails. Warning messages typically don’t effect the return code. What matters is did the script work or not?

Checking Return Codes In Your Script Commands

The conventional technique to check for a non-zero return code using the NEQ (Not-Equal-To) operator of the IF command:

Another common technique is:

The ERRORLEVEL 1 statement is true when the return code is any number equal to or greater than 1. However, I don’t use this technique because programs can return negative numbers as well as positive numbers. Most programs rarely document every possible return code, so I’d rather explicity check for non-zero with the NEQ 0 style than assuming return codes will be 1 or greater on error.

You may also want to check for specific error codes. For example, you can test that an executable program or script is in your PATH by simply calling the program and checking for return code 9009.

It’s hard to know this stuff upfront – I generally just use trial and error to figure out the best way to check the return code of the program or script I’m calling. Remember, this is duct tape programming. It isn’t always pretty, but, it gets the job done.

Conditional Execution Using the Return Code

There’s a super cool shorthand you can use to execute a second command based on the success or failure of a command. The first program/script must conform to the convention of returning 0 on success and non-0 on failure for this to work.

To execute a follow-on command after sucess, we use the && operator:

To execute a follow-on command after failure, we use the || operator:

I use this technique heavily to halt a script when any error is encountered. By default, the command processor will continue executing when an error is raised. You have to code for halting on error.

A very simple way to halt on error is to use the EXIT command with the /B switch (to exit the current batch script context, and not the command prompt process). We also pass a specific non-zero return code from the failed command to inform the caller of our script about the failure.

A simliar technique uses the implicit GOTO label called :EOF (End-Of-File). Jumping to EOF in this way will exit your current script with the return code of 1.

Tips and Tricks for Return Codes

I recommend sticking to zero for success and return codes that are positive values for DOS batch files. The positive values are a good idea because other callers may use the IF ERRORLEVEL 1 syntax to check your script.

I also recommend documenting your possible return codes with easy to read SET statements at the top of your script file, like this:

Note that I break my own convention here and use uppercase variable names – I do this to denote that the variable is constant and should not be modified elsewhere. Too bad DOS doesn’t support constant values like Unix/Linux shells.

Some Final Polish

One small piece of polish I like is using return codes that are a power of 2.

This gives me the flexibility to bitwise OR multiple error numbers together if I want to record numerous problems in one error code. This is rare for scripts intended for interactive use, but, it can be super helpful when writing scripts you support but you don’t have access to the target systems.

If both SomeCommand.exe and OtherCommand.exe fail, the return code will be the bitwise combination of 0x1 and 0x2, or decimal 3. This return code tells me that both errors were raised. Even better, I can repeatedly call the bitwise OR with the same error code and still interpret which errors were raised.


Hi, I’m Steve. I’m a software developer loving life in Charlotte, NC, an (ISC) 2 CSSLP and an avid fan of Crossfit.

And, no, I’m not Steve Jansen the British jazz drummer, though that does sound like a sweet career.


Recent Posts

Social Stuff


Return code script windows

This forum is closed. Thank you for your contributions.

Answered by:


I am trying to run WBAdmin from JScript with the Windows Scripting Host.

How do I go about resolving these mysteries?

Thanks for the help,


In any case, as you noted, this is not a scripting issue.

All replies

There is no such command in JScript or VBScript.

You need to «new ActuveXObject» the object.

Start here and get this to work before you try anything else.

var shell = new ActiveXObject(«Wscript.Shell»);
var r = shell.Run(«notepad», 1, true);

Forgive my shorthand, but I am doing the correct thing. If I were doing what you imply, I would be getting a JScript run time error «Wscript.Shell is null or is not an object.» and not an unexplained return code from the run command, right?

Can you offer any insight to the stated question?

Thanks for the help,

No matter what you are getting the code you posted is wrong that is all.

Change the code and see what errors you get.

Yes the code I posted was shorthand. The code I am running is doing the correct thing as evidenced by the lack of a JScript runtime error. So to stop this nonsense, this is what I am really doing:

Thanks for the help,

The first step is to read the documentation:

To return r as an unsigned hex string value, you can use a function like this:

Thanks for the help,

The docs for WshShell.Run specifically states:

If [the bWaitOnReturn parameter to function is] set to true, script execution halts until the program finishes, and Run returns any error code returned by the program.

is not a legitimate jscript line of code unless you have created a class that wraps the WScript object. In that case teh return code may not be what you expect.

If you use the correct or at least usab;e ActiveX activation then teh returncode would be meaningful.

If you insist on a custom wrapper then perhaps you can post the actual code that is being used.

Almost all programs return positive result codes or negative values that map to hex values between 0x80000001 ox8007FFFF. I have never seen or heard of an exception or error code that is higher than that.

See the Microsft documetation on system and application error generation in the SDK.

Assuming I am right, and I want to run this script from the Task Scheduler, what am I going to have to do? Is it sufficient to simply run under the Administrative username? Will the script gain the elevated privs it needs or do I need some other magic?


Коды возврата Return Codes

В этом разделе описаны коды возврата и сообщения об ошибках средства миграции пользовательского состояния (USMT) 10.0. This topic describes User State Migration Tool (USMT) 10.0 return codes and error messages. Также включена таблица с перечислением кодов возврата USMT со связанными шагами по смягчению последствий. Also included is a table listing the USMT return codes with their associated mitigation steps. Кроме того, в этом разделе данная статья содержит советы, которые помогут вам использовать журналы для определения причин, по которым произошла ошибка. In addition, this topic provides tips to help you use the logfiles to determine why you received an error.

Понимание требований к запуску USMT поможет свести к минимуму ошибки в миграциях USMT. Understanding the requirements for running USMT can help minimize errors in your USMT migrations. Дополнительные сведения см. в сведениях о требованиях USMT. For more information, see USMT Requirements.

В этой теме In This Topic

Коды возврата USMT USMT Return Codes

Если в миграции USMT произошла ошибка, можно использовать коды возврата и более конкретные сведения, предоставляемые в связанных сообщениях об ошибках USMT для устранения неполадок и определения действий по устранению неполадок. If you encounter an error in your USMT migration, you can use return codes and the more specific information provided in the associated USMT error messages to troubleshoot the issue and to identify mitigation steps.

Коды возврата сгруппировали в следующие широкие категории, описывая их область отчетности об ошибках: Return codes are grouped into the following broad categories that describe their area of error reporting:

Успех или отмена пользователя Success or User Cancel

Недействительные командные строки Invalid Command Lines

Настройка и инициализация Setup and Initialization

Ошибки без смертельных исходов Non-fatal Errors

Ошибки со смертельным исходом Fatal Errors

В качестве наилучшей практики рекомендуется установить уровень многословия до 5,/v:5 на командных строках ScanState, LoadStateи USMTUtils, чтобы наиболее подробные отчеты были доступны в соответствующих журналах USMT. As a best practice, we recommend that you set verbosity level to 5, /v:5, on the ScanState, LoadState, and USMTUtils command lines so that the most detailed reporting is available in the respective USMT logs. Вы можете использовать более высокий уровень многословия, если вы хотите, чтобы выход файлов журналов переходить к отладите. You can use a higher verbosity level if you want the log files output to go to a debugger.

Сообщения об ошибках USMT USMT Error Messages

Сообщения об ошибках предоставляют более подробные сведения о проблеме миграции, чем связанный код возврата. Error messages provide more detailed information about the migration problem than the associated return code. Например, средство ScanState, LoadStateили USMTUtils может возвращать код «11» (для «USMT_INVALID_PARAMETERS») и связанное сообщение об ошибке, которое читает «/key and/keyfile оба указанных». For example, the ScanState, LoadState, or USMTUtils tool might return a code of «11” (for “USMT_INVALID_PARAMETERS») and a related error message that reads «/key and /keyfile both specified». Сообщение об ошибке отображается в командной подсказке и определяется в файлах журнала ScanState, LoadStateили USMTUtils, чтобы определить, почему был получен код возврата. The error message is displayed at the command prompt and is identified in the ScanState, LoadState, or USMTUtils log files to help you determine why the return code was received.

Дополнительные сведения о перечисленных кодах системных ошибок интерфейса программирования приложений Windows (API) можно получить, введя в командную строку net helpmsg и введя номер кода ошибки. You can obtain more information about any listed Windows application programming interface (API) system error codes by typing net helpmsg on the command line and, then typing the error code number. Дополнительные сведения о кодах системных ошибок см. в этом веб-сайте Microsoft. For more information about System Error Codes, see this Microsoft Web site.

Устранение неполадок кодов возврата и сообщений об ошибках Troubleshooting Return Codes and Error Messages

В следующей таблице перечислены все возвращающие коды по числовому значению, а также связанные сообщения об ошибках и предлагаемые действия по устранению неполадок. The following table lists each return code by numeric value, along with the associated error messages and suggested troubleshooting actions.


Пакетный скрипт — Код возврата

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

Ниже приведены общий код выхода и их описание.

Недостаточно виртуальной памяти.

Это указывает на то, что в Windows не хватает памяти.

Код ошибки Описание
Программа успешно завершена.
1 Неверная функция. Указывает, что Action попытался выполнить нераспознанную команду в командной строке Windows cmd.exe.
2 Система не может найти указанный файл. Указывает, что файл не может быть найден в указанном месте.
3 Система не может найти указанный путь. Указывает, что указанный путь не может быть найден.
5 В доступе отказано. Указывает, что у пользователя нет прав доступа к указанному ресурсу.
Программа не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл. Указывает, что команда, имя приложения или путь были введены с ошибкой при настройке действия.
Приложение прекращено в результате CTRL + C. Указывает, что приложение было прекращено либо с помощью клавиш ввода CTRL + C или CTRL + Break, либо с помощью окна командной строки пользователя.
Приложение не удалось правильно инициализировать. Указывает, что приложение было запущено на рабочем столе, к которому у текущего пользователя нет прав доступа. Другая возможная причина — не удалось инициализировать gdi32.dll или user32.dll.

Недостаточно виртуальной памяти.

Это указывает на то, что в Windows не хватает памяти.

Уровень ошибки

Переменная среды% ERRORLEVEL% содержит код возврата последней выполненной программы или сценария.

По умолчанию способ проверки на наличие ОШИБКИ находится через следующий код.


Обычно используется команда EXIT / B% ERRORLEVEL% в конце пакетного файла, чтобы вернуть коды ошибок из пакетного файла.

EXIT / B в конце командного файла остановит выполнение командного файла.

Используйте EXIT / B в конце пакетного файла для возврата пользовательских кодов возврата.

Переменная среды% ERRORLEVEL% содержит последний уровень ошибки в пакетном файле, который является последними кодами ошибок из последней выполненной команды. В пакетном файле всегда рекомендуется использовать переменные среды вместо постоянных значений, поскольку одна и та же переменная расширяется до разных значений на разных компьютерах.

Давайте посмотрим на быстрый пример того, как проверить коды ошибок из командного файла.


Давайте предположим, что у нас есть пакетный файл с именем Find.cmd, который имеет следующий код. В коде мы четко упомянули, что если мы не найдем файл lists.txt, то должны установить уровень ошибки равным 7. Точно так же, если мы видим, что переменная userprofile не определена, мы должны установить код уровня ошибки на 9.

Давайте предположим, что у нас есть еще один файл с именем App.cmd, который сначала вызывает Find.cmd. Теперь, если Find.cmd возвращает ошибку, в которой он устанавливает уровень ошибки больше 0, он завершает работу программы. В следующем пакетном файле после вызова Find.cnd он на самом деле проверяет, не превышает ли уровень ошибки больше 0.


В приведенной выше программе мы можем использовать следующие сценарии:

Если файл c: \ lists.txt не существует, в выводе консоли ничего не будет отображаться.

Если переменная userprofile не существует, в выводе консоли ничего не будет отображаться.

Если оба вышеуказанных условия выполнены, в командной строке будет отображена строка «Успешное завершение».

Если файл c: \ lists.txt не существует, в выводе консоли ничего не будет отображаться.

Если переменная userprofile не существует, в выводе консоли ничего не будет отображаться.

Если оба вышеуказанных условия выполнены, в командной строке будет отображена строка «Успешное завершение».


В главе, посвященной принятию решений, мы увидели утверждения, которые последовательно выполнялись одно за другим. Кроме того, реализации также могут быть выполнены в пакетном скрипте, чтобы изменить поток управления в логике программы. Затем они классифицируются в поток контрольных операторов.

S.No Петли и описание
1 При реализации заявления

В Batch Script нет прямого оператора while, но мы можем очень легко реализовать этот цикл, используя оператор if и метки.

Конструкция «FOR» предлагает возможности зацикливания для пакетных файлов. Ниже приведена общая конструкция оператора for для работы со списком значений.

Оператор for также может перемещаться по диапазону значений. Ниже приводится общая форма заявления.

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

В Batch Script нет прямого оператора while, но мы можем очень легко реализовать этот цикл, используя оператор if и метки.

Конструкция «FOR» предлагает возможности зацикливания для пакетных файлов. Ниже приведена общая конструкция оператора for для работы со списком значений.

Оператор for также может перемещаться по диапазону значений. Ниже приводится общая форма заявления.

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

Цикл по аргументам командной строки

Оператор ‘for’ также можно использовать для проверки аргументов командной строки. В следующем примере показано, как можно использовать оператор for для циклического перебора аргументов командной строки.



Давайте предположим, что приведенный выше код хранится в файле с именем Test.bat. Приведенная выше команда выдаст следующий вывод, если командный файл передает аргументы командной строки 1,2 и 3 как Test.bat 1 2 3.

Оператор break используется для изменения потока управления внутри циклов в любом языке программирования. Оператор break обычно используется в конструкциях цикла и используется для немедленного завершения самого внутреннего замкнутого цикла.


Читайте также:  Acer aspire 5733z драйвера windows 7
Поделиться с друзьями
Советы экспертов и специалистов