Jump to content
Compatible Support Forums
Sign in to follow this  
Malaris

The AMAZING & VARIED capabilities of cmd.exe!

Recommended Posts

Microsoft Windows XP [Version 5.1.2600]

© Copyright 1985-2001 Microsoft Corp.

 

Z:\>cmd /?

Starts a new instance of the Windows XP command interpreter

 

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]

[[/s] [/C | /K] string]

 

/C Carries out the command specified by string and then terminates

/K Carries out the command specified by string but remains

/S Modifies the treatment of string after /C or /K (see below)

/Q Turns echo off

/D Disable execution of AutoRun commands from registry (see below)

/A Causes the output of internal commands to a pipe or file to be ANSI

/U Causes the output of internal commands to a pipe or file to be

Unicode

/T:fg Sets the foreground/background colors (see COLOR /? for more info)

/E:ON Enable command extensions (see below)

/E:OFF Disable command extensions (see below)

/F:ON Enable file and directory name completion characters (see below)

/F:OFF Disable file and directory name completion characters (see below)

/V:ON Enable delayed environment variable expansion using ! as the

delimiter. For example, /V:ON would allow !var! to expand the

variable var at execution time. The var syntax expands variables

at input time, which is quite a different thing when inside of a FOR

loop.

/V:OFF Disable delayed environment expansion.

 

Note that multiple commands separated by the command separator '&&'

are accepted for string if surrounded by quotes. Also, for compatibility

reasons, /X is the same as /E:ON, /Y is the same as /E:OFF and /R is the

same as /C. Any other switches are ignored.

 

If /C or /K is specified, then the remainder of the command line after

the switch is processed as a command line, where the following logic is

used to process quote (") characters:

 

1. If all of the following conditions are met, then quote characters

on the command line are preserved:

 

- no /S switch

- exactly two quote characters

- no special characters between the two quote characters,

where special is one of: &<>()@^|

- there are one or more whitespace characters between the

the two quote characters

- the string between the two quote characters is the name

of an executable file.

 

2. Otherwise, old behavior is to see if the first character is

a quote character and if so, strip the leading character and

remove the last quote character on the command line, preserving

any text after the last quote character.

 

If /D was NOT specified on the command line, then when CMD.EXE starts, it

looks for the following REG_SZ/REG_EXPAND_SZ registry variables, and if

either or both are present, they are executed first.

 

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

 

and/or

 

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

 

Command Extensions are enabled by default. You may also disable

extensions for a particular invocation by using the /E:OFF switch. You

can enable or disable extensions for all invocations of CMD.EXE on a

machine and/or user logon session by setting either or both of the

following REG_DWORD values in the registry using REGEDT32.EXE:

 

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions

 

and/or

 

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions

 

to either 0x1 or 0x0. The user specific setting takes precedence over

the machine setting. The command line switches take precedence over the

registry settings.

 

The command extensions involve changes and/or additions to the following

commands:

 

DEL or ERASE

COLOR

CD or CHDIR

MD or MKDIR

PROMPT

PUSHD

POPD

SET

SETLOCAL

ENDLOCAL

IF

FOR

CALL

SHIFT

GOTO

START (also includes changes to external command invocation)

ASSOC

FTYPE

 

To get specific details, type commandname /? to view the specifics.

 

Delayed environment variable expansion is NOT enabled by default. You

can enable or disable delayed environment variable expansion for a

particular invocation of CMD.EXE with the /V:ON or /V:OFF switch. You

can enable or disable completion for all invocations of CMD.EXE on a

machine and/or user logon session by setting either or both of the

following REG_DWORD values in the registry using REGEDT32.EXE:

 

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion

 

and/or

 

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion

 

to either 0x1 or 0x0. The user specific setting takes precedence over

the machine setting. The command line switches take precedence over the

registry settings.

 

If delayed environment variable expansion is enabled, then the exclamation

character can be used to substitute the value of an environment variable

at execution time.

 

File and Directory name completion is NOT enabled by default. You can

enable or disable file name completion for a particular invocation of

CMD.EXE with the /F:ON or /F:OFF switch. You can enable or disable

completion for all invocations of CMD.EXE on a machine and/or user logon

session by setting either or both of the following REG_DWORD values in

the registry using REGEDT32.EXE:

 

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar

 

and/or

 

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar

 

with the hex value of a control character to use for a particular

function (e.g. 0x4 is Ctrl-D and 0x6 is Ctrl-F). The user specific

settings take precedence over the machine settings. The command line

switches take precedence over the registry settings.

 

If completion is enabled with the /F:ON switch, the two control

characters used are Ctrl-D for directory name completion and Ctrl-F for

file name completion. To disable a particular completion character in

the registry, use the value for space (0x20) as it is not a valid

control character.

 

Completion is invoked when you type either of the two control

characters. The completion function takes the path string to the left

of the cursor appends a wild card character to it if none is already

present and builds up a list of paths that match. It then displays the

first matching path. If no paths match, it just beeps and leaves the

display alone. Thereafter, repeated pressing of the same control

character will cycle through the list of matching paths. Pressing the

Shift key with the control character will move through the list

backwards. If you edit the line in any way and press the control

character again, the saved list of matching paths is discarded and a new

one generated. The same occurs if you switch between file and directory

name completion. The only difference between the two control characters

is the file completion character matches both file and directory names,

while the directory completion character only matches directory names.

If file completion is used on any of the built in directory commands

(CD, MD or RD) then directory completion is assumed.

 

The completion code deals correctly with file names that contain spaces

or other special characters by placing quotes around the matching path.

Also, if you back up, then invoke completion from within a line, the

text to the right of the cursor at the point completion was invoked is

discarded.

 

The special characters that require quotes are:

<space>

&()[]{}^=;!'+,`~

 

Z:\>

Share this post


Link to post

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×