| Command Prompt (cmd.exe) | |
|---|---|
| Other names | Windows Command Processor |
| Developers | Microsoft,IBM, ReactOS contributors |
| Initial release | December 1987; 37 years ago (1987-12) |
| Operating system |
|
| Platform | IA-32,x86-64,ARM (and historicallyDEC Alpha,MIPS,PowerPC, andItanium) |
| Predecessor | COMMAND.COM |
| Type | Command-line interpreter |
cmd.exe, a.k.a.Command Prompt, is ashellprogram on later versions ofWindows (NT andCE families),OS/2,[1]eComStation,ArcaOS, andReactOS.[2] In some versions of Windows (CE .NET 4.2,[3]CE 5.0[4] andEmbedded CE 6.0[5]) it is referred to as theCommand Processor Shell. Implementation differs between operating systems, but with significant consistency of behavior and available commands.
Older, related operating systems,DOS andWindows 9x, providedCOMMAND.COM as the shell.cmd.exe replacedCOMMAND.COM in the Windows product line with the introduction of NT. Current versions of Windows includePowerShell as an alternative shell that runs side-by-side withcmd.exe.
The initial version ofcmd.exe for Windows NT was developed by Therese Stowell.[6]Windows CE 2.11 was the first embedded Windows release to support a console and a Windows CE version ofcmd.exe.[7] The ReactOS implementation ofcmd.exe is derived from FreeCOM, theFreeDOS command line interpreter.[2]
In Windows, the shell is presented in thedesktop viaWindows Terminal or on older versions viaWindows Console.
In OS/2 and Windows, the shell supportspipes to allow both sides of a pipeline to run concurrently. As a result, it is possible to redirect thestandard error stream. In contrast,COMMAND.COM uses temporary files, and runs the two sides serially, one after the other.
Multiple commands can be included in a single line using the command separator& or&&.[8]
With the& separator, a subsequent command is executed even if the previous command indicates an error.[9] In the following example, each of the three commands is executed, one after the other, and regardless of their result code.
>CommandA& CommandB& CommandC
With the&& separator, a command must complete successfully for the subsequent command to execute. In the following example,CommandB only executes ifCommandA completes successfully, andCommandC only executes ifCommandB also completes successfully.
>CommandA&& CommandB&& CommandC
The shell limits the length of a command line which includes entered text, individualenvironment variables that are inherited by otherprocesses, and all environment variable expansions[10] OnWindows XP and later, the maximum length is 8191 (213-1) characters. On earlier versions, such asWindows 2000 orWindows NT 4.0, the maximum length is 2047 (211-1) characters.
The shell reserves the following characters asspecial:[8]&<>[]{}^=;!'+,`~ andwhitespace. In some cases, an argument that contains such characters must be enclosed in double quotes to escape from the special character handling. For example:
>echo me& youme'you' is not recognized as an internal or external command,operable program or batch file.>echo"me & you""me & you"
The following sections listinternalcommands for implementations of the shell on various operating systems.

Internal commands in OS/2:[11]

Internal commands in Windows NT and later:[12]

Internal commands in Windows CE .NET 4.2,[13] Windows CE 5.0[14] and Windows Embedded CE 6.0:[15]
Thenet command is available as an external command.

Internal commands in ReactOS:[2]
On Windows,cmd.exe provides varioususer experience enhancments as compared toCOMMAND.COM, including:
HELP command can then be issued with the error message number to obtain further information.SETLOCAL EnableDelayedExpansion, allowing values of variables to be calculated at runtime instead of during parsing of script before execution (Windows 2000 and later), fixing DOS idioms that made usingcontrol structures hard and complex.[16] The extensions can be disabled, providing a stricter compatibility mode.DELTREE command was merged into therd command via the/Sswitch.SetLocal andEndLocal commands limit the scope of changes to the environment. Changes made to the command line environment afterSetLocal are local to thebatch file.EndLocal restores the previous settings.[17]call command allows subroutines within batch file. TheCOMMAND.COMCALL command only supports calling external batch files.set command are comparable withC shell.[further explanation needed]set command can performexpression evaluation.for command supports parsing files and arbitrary sets in addition to file names.pushd andpopd commands provide access past navigated paths similar to forward and back buttons in a web browser orFile Explorer.if command can performcase-insensitive comparisons and numeric equality and inequality comparisons in addition to case-sensitive string comparisons. This was available in DR-DOS, but not inPC DOS orMS-DOS.