Command Shell overview
This page is from Microsoft
Updated: January 21, 2005
Command shell overview
You can use the command shell to create and edit batch files (also called scripts) to automate routine tasks. For example, you can use scripts to automate the management of user accounts or nightly backups. You can also use the command-line version of Windows Script Host, CScript, to run more sophisticated scripts in the command shell. For more information, see Run Windows Script Host . You can perform operations more efficiently by using batch files than you can by using the user interface. Batch files accept all commands that are available at the command line.
You can customize the command prompt window for easier viewing and to increase control over how you run programs. For more information about customizing the command prompt window, see Configure the command prompt .
Using command syntax
xcopySource [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:File1[+[File2]][+[File3]] [{/y | /-y}] [/z]
The following table explains how to interpret the different text formats.
Format | Meaning |
Italic | Information that the user must supply |
Bold | Elements that the user must type exactly as shown |
Ellipsis (...) | Parameter that can be repeated several times in a command line |
Between brackets ([]) | Optional items |
Between braces ({}); choices separated by pipe (|). Example: {even|odd} | Set of choices from which the user must choose only one |
Courier font | Code or program output |
Using multiple commands and conditional processing symbols
You can use the special characters listed in the following table to pass multiple commands.
Character | Syntax | Definition |
& [...] | Command1 &Command2 | Use to separate multiple commands on one command line. Cmd.exe runs the first command, and then the second command. |
&& [...] | Command1 &&Command2 | Use to run the command following && only if the command preceding the symbol is successful. Cmd.exe runs the first command, and then runs the second command only if the first command completed successfully. |
|| [...] | Command1 || Command2 | Use to run the command following || only if the command preceding || fails. Cmd.exe runs the first command, and then runs the second command only if the first command did not complete successfully (receives an error code greater than zero). |
( ) [...] | (Command1 & Command2) | Use to group or nest multiple commands. |
; or , | Command1 Parameter1; Parameter2 | Use to separate command parameters. |
Notes
- The ampersand (&), pipe (|), and parentheses ( ) are special characters that must be preceded by the escape character (^) or quotation marks when you pass them as arguments.
- If a command completes an operation successfully, it returns an exit code of zero (0) or no exit code. For more information about exit codes, see Using the Windows Deployment and Resource Kits .
Nesting command shells
To nest a command shell, at the command prompt, type:
cmd
A message similar to the following appears:
Microsoft (R) Windows Server 2003, Standard Edition (TM)(C) Copyright 1985-2002 Microsoft Corp.
To close the nested command shell, type exit.
You can localize changes even further in an instance of Cmd.exe (or in a script) by using the setlocal and endlocal commands. Setlocal creates a local scope and endlocal terminates the local scope. Any changes made within the setlocal and endlocal scope are discarded, thereby leaving the original environment unchanged. You can nest these two commands to a maximum of 32 levels. For more information about the setlocal and endlocal commands, see Setlocal and Endlocal .
Using environment variables with Cmd.exe
System environment variables are preset in the operating system and available to all Windows server operating system processes. Only users with administrative credentials can change system variables. These variables are most commonly used in logon scripts.
Local environment variables are only available when the user for whom they were created is logged on to the computer. Local variables set in the HKEY_CURRENT_USERhive are valid only for the current user, but define the behavior of the global operating system environment.
The following list describes the various types of variables in descending order of precedence:
- Built-in system variables
- System variables found in the HKEY_LOCAL_MACHINE hive
- Local variables found in the HKEY_CURRENT_USER hive
- All environment variables and paths set in the Autoexec.bat file
- All environment variables and paths set in a logon script (if present)
- Variables used interactively in a script or batch file
In the command shell, each instance of Cmd.exe inherits the environment of its parent application. Therefore, you can change the variables in the new Cmd.exe environment without affecting the environment of the parent application.
The following table lists the system and local environment variables for the Windows server operating system.
Variable | Type | Description |
%ALLUSERSPROFILE% | Local | Returns the location of the All Users Profile. |
%APPDATA% | Local | Returns the location where applications store data by default. |
%CD% | Local | Returns the current directory string. |
%CMDCMDLINE% | Local | Returns the exact command line used to start the current Cmd.exe. |
%CMDEXTVERSION% | System | Returns the version number of the current Command Processor Extensions. |
%COMPUTERNAME% | System | Returns the name of the computer. |
%COMSPEC% | System | Returns the exact path to the command shell executable. |
%DATE% | System | Returns the current date. Uses the same format as the date /t command. Generated by Cmd.exe. For more information about the date command, see Date . |
%ERRORLEVEL% | System | Returns the error code of the most recently used command. A non zero value usually indicates an error. |
%HOMEDRIVE% | System | Returns which local workstation drive letter is connected to the user's home directory. Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups. |
%HOMEPATH% | System | Returns the full path of the user's home directory. Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups. |
%HOMESHARE% | System | Returns the network path to the user's shared home directory. Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups. |
%LOGONSERVER% | Local | Returns the name of the domain controller that validated the current logon session. |
%NUMBER_OF_ PROCESSORS% | System | Specifies the number of processors installed on the computer. |
%OS% | System | Returns the operating system name. Windows 2000 displays the operating system as Windows NT. |
%PATH% | System | Specifies the search path for executable files. |
%PATHEXT% | System | Returns a list of the file extensions that the operating system considers to be executable. |
%PROCESSOR_ ARCHITECTURE% | System | Returns the chip architecture of the processor. Values: x86 or IA64 (Itanium-based). |
%PROCESSOR_ IDENTFIER% | System | Returns a description of the processor. |
%PROCESSOR_ LEVEL% | System | Returns the model number of the processor installed on the computer. |
%PROCESSOR_ REVISION% | System | Returns the revision number of the processor. |
%PROMPT% | Local | Returns the command prompt settings for the current interpreter. Generated by Cmd.exe. |
%RANDOM% | System | Returns a random decimal number between 0 and 32767. Generated by Cmd.exe. |
%SYSTEMDRIVE% | System | Returns the drive containing the Windows Server operating system root directory (that is, the system root). |
%SYSTEMROOT% | System | Returns the location of the Windows Server operating system root directory. |
%TEMP% and %TMP% | System and User | Returns the default temporary directories that are used by applications available to users who are currently logged on. Some applications require TEMP and others require TMP. |
%TIME% | System | Returns the current time. Uses the same format as the time /t command. Generated by Cmd.exe. For more information about the time command, see Time . |
%USERDOMAIN% | Local | Returns the name of the domain that contains the user's account. |
%USERNAME% | Local | Returns the name of the user who is currently logged on. |
%USERPROFILE% | Local | Returns the location of the profile for the current user. |
%WINDIR% | System | Returns the location of the operating system directory. |
Setting environment variables
To view a variable, at a command prompt, type:
setVariableName
To add a variable, at a command prompt, type:
setVariableName=Value
To delete a variable, at a command prompt, type:
setVariableName=
You can use most characters as variable values, including white space. If you use the special characters <, >, |, &, or ^, you must precede them with the escape character (^) or quotation marks. If you use quotation marks, they are included as part of the value because everything following the equal sign is taken as the value. Consider the following examples:
-
To create the variable value new&name, type:
set varname=new^&name
-
To create the variable value "new&name", type:
set varname="new&name"
-
If you type set varname=new&name at the command prompt, an error message similar to the following appears:
"'name' is not recognized as an internal or external command, operable program or batch file."
Variable names are not case-sensitive. However, set displays the variable exactly as you typed it. You can combine uppercase and lowercase letters in your variable names to make your code more readable (for example, UserName).
Notes
- The maximum individual environment variable size is 8192bytes.
- The maximum total environment variable size for all variables, which includes variable names and the equal sign, is 65,536KB.
Substituting environment variable values