Command Prompt, also known as cmd.exe or cmd (after its executable
file name), is the command-line interpreter on Windows NT, Windows CE,
OS/2 and eComStation operating systems. It is the counterpart of
COMMAND.COM in DOS and Windows 9x systems (where it is also called
«MS-DOS Prompt»), and analogous to the Unix shells used on Unix-like
systems.
Source: Wikipedia
I have searched everywhere but could not get an answer for this question.
Each website focuses on the fact that batch language is used in cmd.exe but I could not find the language in which it is written.
So my question is:
What is the language that was used to write command-prompt or cmd.exe in Windows?
phuclv
38.2k15 gold badges157 silver badges477 bronze badges
asked Jul 18, 2018 at 12:31
9
The file, when opened in a text editor, contains the path onecore\base\cmd\maxpathawarestring.cpp
, which would indicate that at least one source file is written in C++.
Addendums from Hans Passant:
The imports it depends on makes it is likely to be a mix of C and C++. CRT functions like
longjmp
,calloc
,free
indicate C code, might well be ancient and hark back to the command.com days. It clearly also uses C++ exception handling, C++ is their weapon of choice for all recent code development. Mixing is not uncommon.
And eryksun:
under a debugger it’s obvious that recent additions to CMD have been written in C++.
x cmd!*::*
shows significant use of the C++std
namespace[…]
But CMD is still mostly C, not C++. Its commands and support functions are implemented as C functions such as
eExit
,eChdir
,ParseStatement
,SearchForExecutable
, andExecPgm
. They haven’t ported all of this old C code to an OOP design.
So I’d go with a mix of C and C++.
answered Jul 18, 2018 at 12:46
CodeCasterCodeCaster
148k23 gold badges221 silver badges276 bronze badges
1
As officially confirmed by MS’ Rich Turner, originally it’s written in C
Cmd is a Win32 app written entirely in ‘C’ — this is important since one of the key goals of NT was to be portable across many different processor and machine architectures
but parts of it were migrated to C++ as of now
Inside the Windows Console
Windows Console is a traditional Win32 executable and, though it was originally written in ‘C’, much of the code is being migrated to modern C++ as the team modernizes and modularizes Console’s codebase.
For those who care about such things: Many have asked whether Windows is written in C or C++. The answer is that — despite NT’s Object-Based design — like most OS’, Windows is almost entirely written in ‘C’. Why? C++ introduces a cost in terms of memory footprint, and code execution overhead. Even today, the hidden costs of code written in C++ can be surprising, but back in the late 1990’s, when memory cost ~$60/MB (yes … $60 per MEGABYTE!), the hidden memory cost of vtables etc. was significant. In addition, the cost of virtual-method call indirection and object-dereferencing could result in very significant performance & scale penalties for C++ code at that time. While one still needs to be careful, the performance overhead of modern C++ on modern computers is much less of a concern, and is often an acceptable trade-off considering its security, readability, and maintainability benefits … which is why we’re steadily upgrading the Console’s code to modern C++.
Windows Command-Line: Inside the Windows Console
If you look into the latest Windows Console’s internals structure you can see that it uses Map
, Collection
which suggests that it likely uses some C++/CX
From the top (original buffer’s blue boxes):
ScreenInfo
– maintains information about the viewport, etc., and contains a TextBuffer
TextBuffer
– represents the Console’s text area as a collection of rows
Row
– uniquely represents each CharRow in the console and the formatting attributes applied to each row
CharRow
– contains a collection of CharRowCells, and the logic and state to handle row wrapping & navigation
CharRowCell
– contains the actual cell’s text, and a DbcsAttribute byte containing cell-specific flags
In case you’re interested then conhost.exe has also been open sourced, under the form of the new Windows terminal
The Windows console host,
conhost.exe
, is Windows’ original command-line user experience. It implements Windows’ command-line infrastructure, and is responsible for hosting the Windows Console API, input engine, rendering engine, and user preferences. The console host code in this repository is the actual source from which theconhost.exe
in Windows itself is built.https://github.com/microsoft/terminal
You can find more pretty good articles with detailed information in the Windows command line blog
answered Feb 7, 2019 at 14:10
phuclvphuclv
38.2k15 gold badges157 silver badges477 bronze badges
From Wikipedia, the free encyclopedia
For other uses, see CMD.
«Command Prompt» redirects here. For the concept, see Command prompt.
Command Prompt (cmd.exe)
Other names | Windows Command Processor |
---|---|
Developer(s) | Microsoft, IBM, ReactOS contributors |
Initial release | December 1987; 35 years ago |
Stable release |
10.0.22000.282 |
Operating system |
|
Platform | IA-32, x86-64, ARM (and historically DEC Alpha, MIPS, PowerPC, and Itanium) |
Predecessor | COMMAND.COM |
Type | Command-line interpreter |
Command Prompt, also known as cmd.exe or cmd, is the default command-line interpreter for the OS/2,[1] eComStation, ArcaOS, Microsoft Windows (Windows NT family and Windows CE family), and ReactOS[2] operating systems. On Windows CE .NET 4.2,[3] Windows CE 5.0[4] and Windows Embedded CE 6.0[5] it is referred to as the Command Processor Shell. Its implementations differ between operating systems, but the behavior and basic set of commands are consistent. cmd.exe is the counterpart of COMMAND.COM in DOS and Windows 9x systems, and analogous to the Unix shells used on Unix-like systems. The initial version of cmd.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 of cmd.exe.[7] The ReactOS implementation of cmd.exe is derived from FreeCOM, the FreeDOS command line interpreter.[2]
Operation[edit]
cmd.exe interacts with the user through a command-line interface. On Windows, this interface is implemented through the Win32 console. cmd.exe may take advantage of features available to native programs of its own platform. For example, on OS/2 and Windows, it can use real pipes in command pipelines, allowing both sides of the pipeline to run concurrently. As a result, it is possible to redirect the standard error stream. (COMMAND.COM uses temporary files, and runs the two sides serially, one after the other.)
Multiple commands can be processed in a single command line using the command separator &&.[8]
When using this separator in the Windows cmd.exe, each command must complete successfully for the following commands to execute. For example:
C:>CommandA && CommandB && CommandC
In the above example, Command B will only execute if Command A completes successfully, and the execution of Command C depends on the successful completion of Command B. To process subsequent commands even if the previous command produces an error, the command separator & should be used.[9] For example:
C:>CommandA & CommandB & CommandC
On Windows XP or later, the maximum length of the string that can be used at the command prompt is 8191 characters. On earlier versions, such as Windows 2000 or Windows NT 4.0, the maximum length of the string is 2047 characters. This limit includes the command line, individual environment variables that are inherited by other processes, and all environment variable expansions.[10]
Quotation marks are required for the following special characters:[8]
& < > [ ] { } ^ = ; ! ' + , ` ~ [white space]
Internal commands[edit]
OS/2[edit]
The following is a list of the Microsoft OS/2 internal cmd.exe commands:[11]
- break
- chcp
- cd
- chdir
- cls
- copy
- date
- del
- detach
- dir
- dpath
- echo
- erase
- exit
- for
- goto
- if
- md
- mkdir
- path
- pause
- prompt
- rd
- rem
- ren
- rename
- rmdir
- set
- shift
- start
- time
- type
- ver
- verify
- vol
Windows NT family[edit]
The following list of internal commands is supported by cmd.exe on Windows NT and later:[12]
- assoc
- break
- call
- cd
- chdir
- cls
- color
- copy
- date
- del
- dir
- dpath
- echo
- endlocal
- erase
- exit
- for
- ftype
- goto
- if
- keys
- md
- mkdir
- mklink (introduced in Windows Vista)
- move
- path
- pause
- popd
- prompt
- pushd
- rd
- rem
- ren
- rename
- rmdir
- set
- setlocal
- shift
- start
- time
- title
- type
- ver
- verify
- vol
Windows CE[edit]
The following list of commands is supported by cmd.exe on Windows CE .NET 4.2,[13] Windows CE 5.0[14] and Windows Embedded CE 6.0:[15]
- attrib
- call
- cd
- chdir
- cls
- copy
- date
- del
- dir
- echo
- erase
- exit
- goto
- help
- if
- md
- mkdir
- move
- path
- pause
- prompt
- pwd
- rd
- rem
- ren
- rename
- rmdir
- set
- shift
- start
- time
- title
- type
In addition, the net command is available as an external command stored in Windowsnet.exe.
ReactOS[edit]
Command Prompt (cmd.exe) on ReactOS
The ReactOS implementation includes the following internal commands:[2]
- ?
- alias
- assoc
- beep
- call
- cd
- chdir
- choice
- cls
- color
- copy
- ctty
- date
- del
- delete
- delay
- dir
- dirs
- echo
- echos
- echoerr
- echoserr
- endlocal
- erase
- exit
- for
- free
- goto
- history
- if
- memory
- md
- mkdir
- mklink
- move
- path
- pause
- popd
- prompt
- pushd
- rd
- rmdir
- rem
- ren
- rename
- replace
- screen
- set
- setlocal
- shift
- start
- time
- timer
- title
- type
- ver
- verify
- vol
Comparison with COMMAND.COM[edit]
On Windows, cmd.exe is mostly compatible with COMMAND.COM but provides the following extensions over it:
- More detailed error messages than the blanket «Bad command or file name» (in the case of malformed commands) of COMMAND.COM. In OS/2, errors are reported in the chosen language of the system, their text being taken from the system message files. The HELP command can then be issued with the error message number to obtain further information.
- Supports using of arrow keys to scroll through command history. (Under DOS this function was only available under DR DOS (through HISTORY) and later via an external component called DOSKEY.)
- Adds rotating command-line completion for file and folder paths, where the user can cycle through results for the prefix using the Tab ↹, and ⇧ Shift+Tab ↹ for reverse direction.
- Treats the caret character (^) as the escape character; the character following it is to be taken literally. There are special characters in cmd.exe and COMMAND.COM (e.g. «<«, «>» and «|») that are meant to alter the behavior of the command line processor. The caret character forces the command line processor to interpret them literally.
- Supports delayed variable expansion with
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 using control structures hard and complex.[16] The extensions can be disabled, providing a stricter compatibility mode.
Internal commands have also been improved:
- The DELTREE command was merged into the RD command, as part of its /S switch.
- SetLocal and EndLocal commands limit the scope of changes to the environment. Changes made to the command line environment after SetLocal commands are local to the batch file. EndLocal command restores the previous settings.[17]
- The Call command allows subroutines within batch file. The Call command in COMMAND.COM only supports calling external batch files.
- File name parser extensions to the Set command are comparable with C shell.[further explanation needed]
- The Set command can perform expression evaluation.
- An expansion of the For command supports parsing files and arbitrary sets in addition to file names.
- The new PushD and PopD commands provide access past navigated paths similar to «forward» and «back» buttons in a web browser or File Explorer.
- The conditional IF command can perform case-insensitive comparisons and numeric equality and inequality comparisons in addition to case-sensitive string comparisons. (This was available in DR-DOS, but not in PC DOS or MS-DOS.)
See also[edit]
- Comparison of command shells
- List of DOS commands
- COMMAND.COM
- PowerShell
- Windows Terminal
References[edit]
- ^ «Notes on using the default OS/2 command processor (CMD.EXE)». www.tavi.co.uk.
- ^ a b c «reactos/reactos». GitHub. 4 December 2021.
- ^ «Command Processor Shell (Windows CE .NET 4.2)». docs.microsoft.com.
- ^ «Command Processor Shell (Windows CE 5.0)». docs.microsoft.com.
- ^ «Command Processor Shell (Windows Embedded CE 6.0)». docs.microsoft.com.
- ^ Zachary, G. Pascal (1994). Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft. The Free Press. ISBN 0-02-935671-7.
- ^ Douglas McConnaughey Boling (2001). Programming Microsoft Windows CE (2nd ed.). Microsoft Press. ISBN 978-0735614437.
- ^ a b «cmd». docs.microsoft.com.
- ^ «Command Redirection, Pipes — Windows CMD — SS64.com». ss64.com. Retrieved 2021-09-23.
- ^ Command prompt (Cmd.exe) command-line string limitation
- ^ Microsoft Operating System/2 User’s Reference (PDF). Microsoft. 1987.
- ^ Hill, Tim (1998). Windows NT Shell Scripting. Macmillan Technical Publishing. ISBN 978-1578700479.
- ^ «Command Processor Commands (Windows CE .NET 4.2)». docs.microsoft.com.
- ^ «Command Processor Commands (Windows CE 5.0)». docs.microsoft.com.
- ^ «Command Processor Commands (Windows Embedded CE 6.0)». docs.microsoft.com.
- ^ «Windows 2000 delayed environment variable expansion». Windows IT Pro. Archived from the original on 2015-07-13. Retrieved 2015-07-13.
- ^ «Setlocal». TechNet. Microsoft. Retrieved 2015-01-13.
Further reading[edit]
- David Moskowitz; David Kerr (1994). OS/2 2.11 Unleashed (2nd ed.). Sams Publishing. ISBN 978-0672304453.
- Stanek, William R. (2008). Windows Command-Line Administrator’s Pocket Consultant (2nd ed.). Microsoft Press. ISBN 978-0735622623.
External links[edit]
- «Command-line reference A-Z». Microsoft.
{{cite web}}
: CS1 maint: url-status (link) - «Cmd». Microsoft Windows XP Product Documentation. Microsoft. Archived from the original on 2011-09-02. Retrieved 2006-05-24.
- «Command Prompt: frequently asked questions». windows Help. Microsoft. Archived from the original on 2015-04-22. Retrieved 2015-04-20.
- «An A–Z Index of the Windows CMD command line». SS64.com.
- «Windows CMD.com – Hub of Windows Commands». windowscmd.com.
From Wikipedia, the free encyclopedia
For other uses, see CMD.
«Command Prompt» redirects here. For the concept, see Command prompt.
Command Prompt (cmd.exe)
Other names | Windows Command Processor |
---|---|
Developer(s) | Microsoft, IBM, ReactOS contributors |
Initial release | December 1987; 35 years ago |
Stable release |
10.0.22000.282 |
Operating system |
|
Platform | IA-32, x86-64, ARM (and historically DEC Alpha, MIPS, PowerPC, and Itanium) |
Predecessor | COMMAND.COM |
Type | Command-line interpreter |
Command Prompt, also known as cmd.exe or cmd, is the default command-line interpreter for the OS/2,[1] eComStation, ArcaOS, Microsoft Windows (Windows NT family and Windows CE family), and ReactOS[2] operating systems. On Windows CE .NET 4.2,[3] Windows CE 5.0[4] and Windows Embedded CE 6.0[5] it is referred to as the Command Processor Shell. Its implementations differ between operating systems, but the behavior and basic set of commands are consistent. cmd.exe is the counterpart of COMMAND.COM in DOS and Windows 9x systems, and analogous to the Unix shells used on Unix-like systems. The initial version of cmd.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 of cmd.exe.[7] The ReactOS implementation of cmd.exe is derived from FreeCOM, the FreeDOS command line interpreter.[2]
Operation[edit]
cmd.exe interacts with the user through a command-line interface. On Windows, this interface is implemented through the Win32 console. cmd.exe may take advantage of features available to native programs of its own platform. For example, on OS/2 and Windows, it can use real pipes in command pipelines, allowing both sides of the pipeline to run concurrently. As a result, it is possible to redirect the standard error stream. (COMMAND.COM uses temporary files, and runs the two sides serially, one after the other.)
Multiple commands can be processed in a single command line using the command separator &&.[8]
When using this separator in the Windows cmd.exe, each command must complete successfully for the following commands to execute. For example:
C:>CommandA && CommandB && CommandC
In the above example, Command B will only execute if Command A completes successfully, and the execution of Command C depends on the successful completion of Command B. To process subsequent commands even if the previous command produces an error, the command separator & should be used.[9] For example:
C:>CommandA & CommandB & CommandC
On Windows XP or later, the maximum length of the string that can be used at the command prompt is 8191 characters. On earlier versions, such as Windows 2000 or Windows NT 4.0, the maximum length of the string is 2047 characters. This limit includes the command line, individual environment variables that are inherited by other processes, and all environment variable expansions.[10]
Quotation marks are required for the following special characters:[8]
& < > [ ] { } ^ = ; ! ' + , ` ~ [white space]
Internal commands[edit]
OS/2[edit]
The following is a list of the Microsoft OS/2 internal cmd.exe commands:[11]
- break
- chcp
- cd
- chdir
- cls
- copy
- date
- del
- detach
- dir
- dpath
- echo
- erase
- exit
- for
- goto
- if
- md
- mkdir
- path
- pause
- prompt
- rd
- rem
- ren
- rename
- rmdir
- set
- shift
- start
- time
- type
- ver
- verify
- vol
Windows NT family[edit]
The following list of internal commands is supported by cmd.exe on Windows NT and later:[12]
- assoc
- break
- call
- cd
- chdir
- cls
- color
- copy
- date
- del
- dir
- dpath
- echo
- endlocal
- erase
- exit
- for
- ftype
- goto
- if
- keys
- md
- mkdir
- mklink (introduced in Windows Vista)
- move
- path
- pause
- popd
- prompt
- pushd
- rd
- rem
- ren
- rename
- rmdir
- set
- setlocal
- shift
- start
- time
- title
- type
- ver
- verify
- vol
Windows CE[edit]
The following list of commands is supported by cmd.exe on Windows CE .NET 4.2,[13] Windows CE 5.0[14] and Windows Embedded CE 6.0:[15]
- attrib
- call
- cd
- chdir
- cls
- copy
- date
- del
- dir
- echo
- erase
- exit
- goto
- help
- if
- md
- mkdir
- move
- path
- pause
- prompt
- pwd
- rd
- rem
- ren
- rename
- rmdir
- set
- shift
- start
- time
- title
- type
In addition, the net command is available as an external command stored in Windowsnet.exe.
ReactOS[edit]
Command Prompt (cmd.exe) on ReactOS
The ReactOS implementation includes the following internal commands:[2]
- ?
- alias
- assoc
- beep
- call
- cd
- chdir
- choice
- cls
- color
- copy
- ctty
- date
- del
- delete
- delay
- dir
- dirs
- echo
- echos
- echoerr
- echoserr
- endlocal
- erase
- exit
- for
- free
- goto
- history
- if
- memory
- md
- mkdir
- mklink
- move
- path
- pause
- popd
- prompt
- pushd
- rd
- rmdir
- rem
- ren
- rename
- replace
- screen
- set
- setlocal
- shift
- start
- time
- timer
- title
- type
- ver
- verify
- vol
Comparison with COMMAND.COM[edit]
On Windows, cmd.exe is mostly compatible with COMMAND.COM but provides the following extensions over it:
- More detailed error messages than the blanket «Bad command or file name» (in the case of malformed commands) of COMMAND.COM. In OS/2, errors are reported in the chosen language of the system, their text being taken from the system message files. The HELP command can then be issued with the error message number to obtain further information.
- Supports using of arrow keys to scroll through command history. (Under DOS this function was only available under DR DOS (through HISTORY) and later via an external component called DOSKEY.)
- Adds rotating command-line completion for file and folder paths, where the user can cycle through results for the prefix using the Tab ↹, and ⇧ Shift+Tab ↹ for reverse direction.
- Treats the caret character (^) as the escape character; the character following it is to be taken literally. There are special characters in cmd.exe and COMMAND.COM (e.g. «<«, «>» and «|») that are meant to alter the behavior of the command line processor. The caret character forces the command line processor to interpret them literally.
- Supports delayed variable expansion with
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 using control structures hard and complex.[16] The extensions can be disabled, providing a stricter compatibility mode.
Internal commands have also been improved:
- The DELTREE command was merged into the RD command, as part of its /S switch.
- SetLocal and EndLocal commands limit the scope of changes to the environment. Changes made to the command line environment after SetLocal commands are local to the batch file. EndLocal command restores the previous settings.[17]
- The Call command allows subroutines within batch file. The Call command in COMMAND.COM only supports calling external batch files.
- File name parser extensions to the Set command are comparable with C shell.[further explanation needed]
- The Set command can perform expression evaluation.
- An expansion of the For command supports parsing files and arbitrary sets in addition to file names.
- The new PushD and PopD commands provide access past navigated paths similar to «forward» and «back» buttons in a web browser or File Explorer.
- The conditional IF command can perform case-insensitive comparisons and numeric equality and inequality comparisons in addition to case-sensitive string comparisons. (This was available in DR-DOS, but not in PC DOS or MS-DOS.)
See also[edit]
- Comparison of command shells
- List of DOS commands
- COMMAND.COM
- PowerShell
- Windows Terminal
References[edit]
- ^ «Notes on using the default OS/2 command processor (CMD.EXE)». www.tavi.co.uk.
- ^ a b c «reactos/reactos». GitHub. 4 December 2021.
- ^ «Command Processor Shell (Windows CE .NET 4.2)». docs.microsoft.com.
- ^ «Command Processor Shell (Windows CE 5.0)». docs.microsoft.com.
- ^ «Command Processor Shell (Windows Embedded CE 6.0)». docs.microsoft.com.
- ^ Zachary, G. Pascal (1994). Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft. The Free Press. ISBN 0-02-935671-7.
- ^ Douglas McConnaughey Boling (2001). Programming Microsoft Windows CE (2nd ed.). Microsoft Press. ISBN 978-0735614437.
- ^ a b «cmd». docs.microsoft.com.
- ^ «Command Redirection, Pipes — Windows CMD — SS64.com». ss64.com. Retrieved 2021-09-23.
- ^ Command prompt (Cmd.exe) command-line string limitation
- ^ Microsoft Operating System/2 User’s Reference (PDF). Microsoft. 1987.
- ^ Hill, Tim (1998). Windows NT Shell Scripting. Macmillan Technical Publishing. ISBN 978-1578700479.
- ^ «Command Processor Commands (Windows CE .NET 4.2)». docs.microsoft.com.
- ^ «Command Processor Commands (Windows CE 5.0)». docs.microsoft.com.
- ^ «Command Processor Commands (Windows Embedded CE 6.0)». docs.microsoft.com.
- ^ «Windows 2000 delayed environment variable expansion». Windows IT Pro. Archived from the original on 2015-07-13. Retrieved 2015-07-13.
- ^ «Setlocal». TechNet. Microsoft. Retrieved 2015-01-13.
Further reading[edit]
- David Moskowitz; David Kerr (1994). OS/2 2.11 Unleashed (2nd ed.). Sams Publishing. ISBN 978-0672304453.
- Stanek, William R. (2008). Windows Command-Line Administrator’s Pocket Consultant (2nd ed.). Microsoft Press. ISBN 978-0735622623.
External links[edit]
- «Command-line reference A-Z». Microsoft.
{{cite web}}
: CS1 maint: url-status (link) - «Cmd». Microsoft Windows XP Product Documentation. Microsoft. Archived from the original on 2011-09-02. Retrieved 2006-05-24.
- «Command Prompt: frequently asked questions». windows Help. Microsoft. Archived from the original on 2015-04-22. Retrieved 2015-04-20.
- «An A–Z Index of the Windows CMD command line». SS64.com.
- «Windows CMD.com – Hub of Windows Commands». windowscmd.com.
From Wikipedia, the free encyclopedia
For other uses, see CMD.
«Command Prompt» redirects here. For the concept, see Command prompt.
Command Prompt (cmd.exe)
Other names | Windows Command Processor |
---|---|
Developer(s) | Microsoft, IBM, ReactOS contributors |
Initial release | December 1987; 35 years ago |
Stable release |
10.0.22000.282 |
Operating system |
|
Platform | IA-32, x86-64, ARM (and historically DEC Alpha, MIPS, PowerPC, and Itanium) |
Predecessor | COMMAND.COM |
Type | Command-line interpreter |
Command Prompt, also known as cmd.exe or cmd, is the default command-line interpreter for the OS/2,[1] eComStation, ArcaOS, Microsoft Windows (Windows NT family and Windows CE family), and ReactOS[2] operating systems. On Windows CE .NET 4.2,[3] Windows CE 5.0[4] and Windows Embedded CE 6.0[5] it is referred to as the Command Processor Shell. Its implementations differ between operating systems, but the behavior and basic set of commands are consistent. cmd.exe is the counterpart of COMMAND.COM in DOS and Windows 9x systems, and analogous to the Unix shells used on Unix-like systems. The initial version of cmd.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 of cmd.exe.[7] The ReactOS implementation of cmd.exe is derived from FreeCOM, the FreeDOS command line interpreter.[2]
Operation[edit]
cmd.exe interacts with the user through a command-line interface. On Windows, this interface is implemented through the Win32 console. cmd.exe may take advantage of features available to native programs of its own platform. For example, on OS/2 and Windows, it can use real pipes in command pipelines, allowing both sides of the pipeline to run concurrently. As a result, it is possible to redirect the standard error stream. (COMMAND.COM uses temporary files, and runs the two sides serially, one after the other.)
Multiple commands can be processed in a single command line using the command separator &&.[8]
When using this separator in the Windows cmd.exe, each command must complete successfully for the following commands to execute. For example:
C:>CommandA && CommandB && CommandC
In the above example, Command B will only execute if Command A completes successfully, and the execution of Command C depends on the successful completion of Command B. To process subsequent commands even if the previous command produces an error, the command separator & should be used.[9] For example:
C:>CommandA & CommandB & CommandC
On Windows XP or later, the maximum length of the string that can be used at the command prompt is 8191 characters. On earlier versions, such as Windows 2000 or Windows NT 4.0, the maximum length of the string is 2047 characters. This limit includes the command line, individual environment variables that are inherited by other processes, and all environment variable expansions.[10]
Quotation marks are required for the following special characters:[8]
& < > [ ] { } ^ = ; ! ' + , ` ~ [white space]
Internal commands[edit]
OS/2[edit]
The following is a list of the Microsoft OS/2 internal cmd.exe commands:[11]
- break
- chcp
- cd
- chdir
- cls
- copy
- date
- del
- detach
- dir
- dpath
- echo
- erase
- exit
- for
- goto
- if
- md
- mkdir
- path
- pause
- prompt
- rd
- rem
- ren
- rename
- rmdir
- set
- shift
- start
- time
- type
- ver
- verify
- vol
Windows NT family[edit]
The following list of internal commands is supported by cmd.exe on Windows NT and later:[12]
- assoc
- break
- call
- cd
- chdir
- cls
- color
- copy
- date
- del
- dir
- dpath
- echo
- endlocal
- erase
- exit
- for
- ftype
- goto
- if
- keys
- md
- mkdir
- mklink (introduced in Windows Vista)
- move
- path
- pause
- popd
- prompt
- pushd
- rd
- rem
- ren
- rename
- rmdir
- set
- setlocal
- shift
- start
- time
- title
- type
- ver
- verify
- vol
Windows CE[edit]
The following list of commands is supported by cmd.exe on Windows CE .NET 4.2,[13] Windows CE 5.0[14] and Windows Embedded CE 6.0:[15]
- attrib
- call
- cd
- chdir
- cls
- copy
- date
- del
- dir
- echo
- erase
- exit
- goto
- help
- if
- md
- mkdir
- move
- path
- pause
- prompt
- pwd
- rd
- rem
- ren
- rename
- rmdir
- set
- shift
- start
- time
- title
- type
In addition, the net command is available as an external command stored in Windowsnet.exe.
ReactOS[edit]
Command Prompt (cmd.exe) on ReactOS
The ReactOS implementation includes the following internal commands:[2]
- ?
- alias
- assoc
- beep
- call
- cd
- chdir
- choice
- cls
- color
- copy
- ctty
- date
- del
- delete
- delay
- dir
- dirs
- echo
- echos
- echoerr
- echoserr
- endlocal
- erase
- exit
- for
- free
- goto
- history
- if
- memory
- md
- mkdir
- mklink
- move
- path
- pause
- popd
- prompt
- pushd
- rd
- rmdir
- rem
- ren
- rename
- replace
- screen
- set
- setlocal
- shift
- start
- time
- timer
- title
- type
- ver
- verify
- vol
Comparison with COMMAND.COM[edit]
On Windows, cmd.exe is mostly compatible with COMMAND.COM but provides the following extensions over it:
- More detailed error messages than the blanket «Bad command or file name» (in the case of malformed commands) of COMMAND.COM. In OS/2, errors are reported in the chosen language of the system, their text being taken from the system message files. The HELP command can then be issued with the error message number to obtain further information.
- Supports using of arrow keys to scroll through command history. (Under DOS this function was only available under DR DOS (through HISTORY) and later via an external component called DOSKEY.)
- Adds rotating command-line completion for file and folder paths, where the user can cycle through results for the prefix using the Tab ↹, and ⇧ Shift+Tab ↹ for reverse direction.
- Treats the caret character (^) as the escape character; the character following it is to be taken literally. There are special characters in cmd.exe and COMMAND.COM (e.g. «<«, «>» and «|») that are meant to alter the behavior of the command line processor. The caret character forces the command line processor to interpret them literally.
- Supports delayed variable expansion with
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 using control structures hard and complex.[16] The extensions can be disabled, providing a stricter compatibility mode.
Internal commands have also been improved:
- The DELTREE command was merged into the RD command, as part of its /S switch.
- SetLocal and EndLocal commands limit the scope of changes to the environment. Changes made to the command line environment after SetLocal commands are local to the batch file. EndLocal command restores the previous settings.[17]
- The Call command allows subroutines within batch file. The Call command in COMMAND.COM only supports calling external batch files.
- File name parser extensions to the Set command are comparable with C shell.[further explanation needed]
- The Set command can perform expression evaluation.
- An expansion of the For command supports parsing files and arbitrary sets in addition to file names.
- The new PushD and PopD commands provide access past navigated paths similar to «forward» and «back» buttons in a web browser or File Explorer.
- The conditional IF command can perform case-insensitive comparisons and numeric equality and inequality comparisons in addition to case-sensitive string comparisons. (This was available in DR-DOS, but not in PC DOS or MS-DOS.)
See also[edit]
- Comparison of command shells
- List of DOS commands
- COMMAND.COM
- PowerShell
- Windows Terminal
References[edit]
- ^ «Notes on using the default OS/2 command processor (CMD.EXE)». www.tavi.co.uk.
- ^ a b c «reactos/reactos». GitHub. 4 December 2021.
- ^ «Command Processor Shell (Windows CE .NET 4.2)». docs.microsoft.com.
- ^ «Command Processor Shell (Windows CE 5.0)». docs.microsoft.com.
- ^ «Command Processor Shell (Windows Embedded CE 6.0)». docs.microsoft.com.
- ^ Zachary, G. Pascal (1994). Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft. The Free Press. ISBN 0-02-935671-7.
- ^ Douglas McConnaughey Boling (2001). Programming Microsoft Windows CE (2nd ed.). Microsoft Press. ISBN 978-0735614437.
- ^ a b «cmd». docs.microsoft.com.
- ^ «Command Redirection, Pipes — Windows CMD — SS64.com». ss64.com. Retrieved 2021-09-23.
- ^ Command prompt (Cmd.exe) command-line string limitation
- ^ Microsoft Operating System/2 User’s Reference (PDF). Microsoft. 1987.
- ^ Hill, Tim (1998). Windows NT Shell Scripting. Macmillan Technical Publishing. ISBN 978-1578700479.
- ^ «Command Processor Commands (Windows CE .NET 4.2)». docs.microsoft.com.
- ^ «Command Processor Commands (Windows CE 5.0)». docs.microsoft.com.
- ^ «Command Processor Commands (Windows Embedded CE 6.0)». docs.microsoft.com.
- ^ «Windows 2000 delayed environment variable expansion». Windows IT Pro. Archived from the original on 2015-07-13. Retrieved 2015-07-13.
- ^ «Setlocal». TechNet. Microsoft. Retrieved 2015-01-13.
Further reading[edit]
- David Moskowitz; David Kerr (1994). OS/2 2.11 Unleashed (2nd ed.). Sams Publishing. ISBN 978-0672304453.
- Stanek, William R. (2008). Windows Command-Line Administrator’s Pocket Consultant (2nd ed.). Microsoft Press. ISBN 978-0735622623.
External links[edit]
- «Command-line reference A-Z». Microsoft.
{{cite web}}
: CS1 maint: url-status (link) - «Cmd». Microsoft Windows XP Product Documentation. Microsoft. Archived from the original on 2011-09-02. Retrieved 2006-05-24.
- «Command Prompt: frequently asked questions». windows Help. Microsoft. Archived from the original on 2015-04-22. Retrieved 2015-04-20.
- «An A–Z Index of the Windows CMD command line». SS64.com.
- «Windows CMD.com – Hub of Windows Commands». windowscmd.com.
Командная строка, также известная как cmd.exe или cmd (по имени исполняемого файла), является интерпретатором командной строки в операционных системах Windows NT, Windows CE, OS / 2 и eComStation. Это аналог COMMAND.COM в системах DOS и Windows 9x (где он также называется «MS-DOS Prompt») и аналогичен оболочкам Unix, используемым в Unix-подобных системах.
Источник: Википедия
Я искал везде, но не нашел ответа на этот вопрос.
Каждый веб-сайт подчеркивает тот факт, что пакетный язык используется в cmd.exe, но мне не удалось найти язык, на котором он написан.
Итак, мой вопрос:
Какой язык использовался для написания командной строки или cmd.exe в Windows?
2 ответа
Лучший ответ
Файл при открытии в текстовом редакторе содержит путь onecorebasecmdmaxpathawarestring.cpp
, который указывает на то, что по крайней мере один исходный файл написан на C ++.
Дополнения от Hans Passant:
Импорт, от которого он зависит, скорее всего, будет сочетанием языков C и C ++. Функции CRT, такие как
longjmp
,calloc
,free
, обозначают код C, вполне могут быть древними и восходить ко временам command.com. Очевидно, что он также использует обработку исключений C ++, C ++ — их предпочтительное оружие для всех последних разработок кода. Смешивание — не редкость.
И эриксун:
под отладчиком очевидно, что последние дополнения к CMD были написаны на C ++.
x cmd!*::*
показывает значительное использование пространства имен C ++std
[…]
Но CMD по-прежнему в основном C, а не C ++. Его команды и вспомогательные функции реализованы как функции C, такие как
eExit
,eChdir
,ParseStatement
,SearchForExecutable
иExecPgm
. Они не перенесли весь этот старый код C в дизайн ООП.
Так что я бы выбрал сочетание C и C ++.
4
CodeCaster
19 Июл 2018 в 12:14
Как официально подтверждено Ричардом Тернером М.С., изначально написано на C
Cmd — это приложение Win32, полностью написанное на ‘C’ — это важно, поскольку одной из ключевых целей NT было переносимость между различными архитектурами процессоров и компьютеров.
Но некоторые его части были перенесены на C ++ на данный момент
Консоль Windows — это традиционный исполняемый файл Win32, и, хотя он изначально был написан на языке C, большая часть кода переносится на современный C ++ по мере того, как команда модернизирует и модулирует кодовую базу консоли.
Для тех, кто заботится о таких вещах: многие спрашивают, написана ли Windows на C или C ++. Ответ заключается в том, что, несмотря на объектно-ориентированный дизайн NT, как и большинство операционных систем, Windows почти полностью написана на языке C. Почему? C ++ требует затрат с точки зрения занимаемой памяти и накладных расходов на выполнение кода. Даже сегодня скрытые затраты на код, написанный на C ++, могут вызывать удивление, но в конце 1990-х годов, когда память стоимость ~ 60 долларов за Мб (да… 60 долларов за MEGABYTE !), стоимость скрытой памяти для vtables и т. д. была значительной. Кроме того, стоимость косвенного обращения к виртуальным методам и разыменования объектов может привести к очень значительным потерям производительности и масштабирования для кода C ++ в то время. Хотя по-прежнему нужно быть осторожным, накладные расходы на производительность современного C ++ на современных компьютерах гораздо меньше беспокоят и часто являются приемлемым компромиссом, учитывая его преимущества в области безопасности, читаемости и ремонтопригодности … вот почему мы последовательное обновление кода консоли до современного C ++.
Командная строка Windows: внутри консоли Windows
Если вы посмотрите на внутренняя структура последней версии консоли Windows, вы можете видеть, что она использует Map
, Collection
, что предполагает использование некоторых C ++ / CX
Сверху (синие прямоугольники исходного буфера):
ScreenInfo
— поддерживает информацию об области просмотра и т. Д. И содержит TextBuffer
TextBuffer
— представляет текстовую область консоли в виде набора строк.
Row
— однозначно представляет каждую строку CharRow в консоли и атрибуты форматирования, применяемые к каждой строке.
CharRow
— содержит набор CharRowCells, а также логику и состояние для обработки переноса строк и навигации.
CharRowCell
— содержит фактический текст ячейки и байт DbcsAttribute, содержащий специфичные для ячейки флаги.
Если вас это интересует, то conhost.exe также был открыт в виде нового терминала Windows.
Хост консоли Windows,
conhost.exe
, является исходным интерфейсом командной строки Windows. Он реализует инфраструктуру командной строки Windows и отвечает за размещение API консоли Windows, механизма ввода, механизма визуализации и пользовательских настроек. Код хоста консоли в этом репозитории является фактическим источником, из которого создаетсяconhost.exe
в самой Windows.https://github.com/microsoft/terminal
Вы можете найти больше хороших статей с подробной информацией в блоге о командной строке Windows
0
phuclv
16 Апр 2020 в 05:12
Командная строка in Windows 10 | |
---|---|
Тип | Command–линия переводчик |
Когда вы входите в систему UNIX, ваш главный интерфейс к системе называется UNIX SHELL. Это программа, которая отображает подсказку со знаком доллара ($). Это приглашение означает, что оболочка готова принять введенные вами команды. В системе UNIX можно использовать более одной разновидности оболочки.
На каком языке используется командная строка Windows?
Кстати, термин «Командная строка» относится к фактическому фрагменту текста, который означает, где вы должны ввести следующую команду в CLI. (например: C:> или # и т. д.). Windows использует пакетную обработку. Самый популярный язык в Linux — bash, но есть альтернативы.
Командная строка Windows — это оболочка?
Что такое командная строка Windows? Командная строка Windows (также известная как командная строка, cmd.exe или просто cmd) — это командная оболочка, основанная на операционной системе MS-DOS 1980-х годов, которая позволяет пользователю напрямую взаимодействовать с операционной системой.
Как вы запускаете команды Unix в командной строке Windows?
Запускать команды UNIX / LINUX в Windows
- Перейдите по ссылке и загрузите файл установки Cygwin .exe — нажмите здесь. …
- После загрузки файла setup.exe дважды щелкните файл .exe, чтобы начать процесс установки.
- Нажмите кнопку «Далее», чтобы продолжить установку.
- Оставьте вариант по умолчанию, выбранный как «Установить из Интернета», и нажмите «Далее».
18 колода 2014 г.
Что такое полная форма CMD?
Председатель и управляющий директор (CMD) является главным исполнительным директором Корпорации и подотчетен Совету директоров.
CMD EXE — это вирус?
Cmd.exe — это вирус? Нет это не так. Настоящий файл cmd.exe — это безопасный системный процесс Microsoft Windows, который называется «Командный процессор Windows». Однако авторы вредоносных программ, таких как вирусы, черви и трояны, намеренно присваивают своим процессам одно и то же имя файла, чтобы избежать обнаружения.
На чем написано CMD?
Смешивание — не редкость. Но CMD по-прежнему в основном C, а не C ++. Его команды и функции поддержки реализованы как функции C, такие как eExit, eChdir, ParseStatement, SearchForExecutable и ExecPgm. Они не перенесли весь этот старый код C в дизайн ООП.
Как мне написать в CMD?
Использование скрипта CMD для открытия блокнота
- Введите CMD в меню «Пуск» Windows и нажмите Enter, чтобы открыть CMD.exe.
- Измените каталог с папки с текущим именем пользователя на базовый каталог, набрав «cd» и нажав Enter. …
- Введите следующую строку и нажмите Enter: запустите notepad.exe «c: windowssystem32».
CMD реально?
Врожденная мышечная дистрофия (ВМД)
Стоит ли изучать cmd или PowerShell?
Powershell может делать все, что умеет командная строка. Вы даже можете запускать старые инструменты командной строки из Powershell. (Использование Windows PowerShell для запуска старых инструментов командной строки). Я считаю, что вам следует сосредоточиться на изучении Powershell и изучать только те инструменты командной строки, для которых у Powershell нет командлетов.
CMD — это терминал?
Итак, cmd.exe не является эмулятором терминала, потому что это приложение Windows, работающее на машине Windows. … Cmd.exe — это консольная программа, а их очень много. Например, telnet и python — это консольные программы. Это означает, что у них есть окно консоли, это монохромный прямоугольник, который вы видите.
Что лучше cmd или PowerShell?
PowerShell сложнее традиционной командной строки, но при этом намного мощнее. Командная строка значительно уступает оболочкам, доступным для Linux и других Unix-подобных систем, но PowerShell уступает ей.
Можете ли вы запустить Unix в Windows?
Cygwin — самый популярный (и бесплатный) эмулятор Linux / UNIX для запуска из Windows. Я бы порекомендовал немного более продвинутое подмножество Cygwin / X, поскольку мы планируем открывать всплывающие окна с удаленных серверов на нашем компьютере с Windows. Загрузите установщик Cygwin, setup.exe.
Можем ли мы запускать команды Linux в Windows?
Подсистема Windows для Linux (WSL) позволяет запускать Linux внутри Windows. … Вам просто нужно скачать и установить его, как любое другое приложение для Windows. После установки вы можете запускать все нужные команды Linux.
Как использовать Linux в Windows?
Виртуальные машины позволяют запускать любую операционную систему в окне на рабочем столе. Вы можете установить бесплатный VirtualBox или VMware Player, скачать файл ISO для дистрибутива Linux, такого как Ubuntu, и установить этот дистрибутив Linux внутри виртуальной машины, как если бы вы устанавливали его на стандартном компьютере.
Аннотация: Описываются возможности языка командных файлов: работа с переменными и параметрами командной строки, реализация циклов, условных операторов и операторов перехода. Даются примеры обработки текстовых файлов с помощью командных файлов
Язык интерпретатора Cmd.exe. Командные файлы
Язык оболочки командной строки (shell language) в Windows реализован в виде командных (или пакетных) файлов. Командный файл в Windows — это обычный текстовый файл с расширением bat или cmd, в котором записаны допустимые команды операционной системы (как внешние, так и внутренние), а также некоторые дополнительные инструкции и ключевые слова, придающие командным файлам некоторое сходство с алгоритмическими языками программирования. Например, если записать в файл deltmp.bat следующие команды:
C: CD %TEMP% DEL /F *.tmp
и запустить его на выполнение (аналогично исполняемым файлам с расширением com или exe), то мы удалим все файлы во временной директории Windows. Таким образом, исполнение командного файла приводит к тому же результату, что и последовательный ввод записанных в нем команд. При этом не проводится никакой предварительной компиляции или проверки синтаксиса кода; если встречается строка с ошибочной командой, то она игнорируется. Очевидно, что если вам приходится часто выполнять одни и те же действия, то использование командных файлов может сэкономить много времени.
Вывод сообщений и дублирование команд
По умолчанию команды пакетного файла перед исполнением выводятся на экран, что выглядит не очень эстетично. С помощью команды ECHO OFF можно отключить дублирование команд, идущих после нее (сама команда ECHO OFF при этом все же дублируется). Например,
REM Следующие две команды будут дублироваться на экране … DIR C: ECHO OFF REM А остальные уже не будут DIR D:
Для восстановления режима дублирования используется команда ECHO ON. Кроме этого, можно отключить дублирование любой отдельной строки в командном файле, написав в начале этой строки символ @, например:
ECHO ON REM Команда DIR C: дублируется на экране DIR C: REM А команда DIR D: — нет @DIR D:
Таким образом, если поставить в самое начало файла команду
то это решит все проблемы с дублированием команд.
В пакетном файле можно выводить на экран строки с сообщениями. Делается это с помощью команды
Например,
Команда ECHO. (точка должна следовать
непосредственно за словом «ECHO»)
выводит на экран пустую строку. Например,
@ECHO OFF ECHO Привет! ECHO. ECHO Пока!
Часто бывает удобно для просмотра сообщений, выводимых из пакетного файла, предварительно полностью очистить экран командой CLS.
Используя механизм перенаправления ввода/вывода (символы > и >>), можно направить сообщения, выводимые командой ECHO, в определенный текстовый файл. Например:
@ECHO OFF ECHO Привет! > hi.txt ECHO Пока! >> hi.txt
С помощью такого метода можно, скажем,
заполнять файлы-протоколы с отчетом о
произведенных действиях. Например:
@ECHO OFF REM Попытка копирования XCOPY C:PROGRAMS D:PROGRAMS /s REM Добавление сообщения в файл report.txt в случае REM удачного завершения копирования IF NOT ERRORLEVEL 1 ECHO Успешное копирование >> report.txt
Использование параметров командной строки
При запуске пакетных файлов в командной строке можно указывать произвольное число параметров, значения которых можно использовать внутри файла. Это позволяет, например, применять один и тот же командный файл для выполнения команд с различными параметрами.
Для доступа из командного файла к параметрам командной строки применяются символы %0, %1, …, %9 или %*. При этом вместо %0 подставляется имя выполняемого пакетного файла, вместо %1, %2, …, %9 — значения первых девяти параметров командной строки соответственно, а вместо %* — все аргументы. Если в командной строке при вызове пакетного файла задано меньше девяти параметров, то «лишние» переменные из %1 – %9 замещаются пустыми строками. Рассмотрим следующий пример. Пусть имеется командный файл copier.bat следующего содержания:
@ECHO OFF CLS ECHO Файл %0 копирует каталог %1 в %2 XCOPY %1 %2 /S
Если запустить его из командной строки с двумя параметрами, например
copier.bat C:Programs D:Backup
то на экран выведется сообщение
Файл copier.bat копирует каталог C:Programs в D:Backup
и произойдет копирование каталога C:Programs со всеми его подкаталогами в D:Backup.
При необходимости можно использовать более девяти параметров командной строки. Это достигается с помощью команды SHIFT, которая изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0, значение %2 – в %1 и т.д. Замещаемому параметру %9 присваивается значение параметра, следующего в командной строке за старым значением %9. Если же такой параметр не задан, то новое значение %9 — пустая строка.
Рассмотрим пример. Пусть командный файл my.bat вызван из командной строки следующим образом:
Тогда %0=my.bat, %1=p1, %2=p2, %3=p3, параметры %4 – %9 являются пустыми строками. После выполнения команды SHIFT значения замещаемых параметров изменятся следующим образом: %0=p1, %1=p2, %2=p3, параметры %3 – %9 – пустые строки.
При включении расширенной обработки команд SHIFT поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть числом от 0 до 9.
Например, в следующей команде:
параметр %2 заменяется на %3, %3 на %4 и т.д., а параметры %0 и %1 остаются без изменений.
Команда, обратная SHIFT (обратный сдвиг), отсутствует. После выполнения SHIFT уже нельзя восстановить параметр (%0), который был первым перед сдвигом. Если в командной строке задано больше десяти параметров, то команду SHIFT можно использовать несколько раз.
В командных файлах имеются некоторые возможности синтаксического анализа заменяемых параметров. Для параметра с номером n (%n) допустимы синтаксические конструкции (операторы), представленные в табл. 3.1.
Таблица
3.1.
Операторы для заменяемых параметров
Операторы | Описание |
---|---|
%~Fn | Переменная %n расширяется до полного имени файла |
%~Dn | Из переменной %n выделяется только имя диска |
%~Pn | Из переменной %n выделяется только путь к файлу |
%~Nn | Из переменной %n выделяется только имя файла |
%~Xn | Из переменной %n выделяется расширение имени файла |
%~Sn | Значение операторов N и X для переменной %n изменяется так, что они работают с кратким именем файла |
%~$PATH:n | Проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %n заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку. Естественно, здесь переменную PATH можно заменить на любое другое допустимое значение |
Данные синтаксические конструкции можно объединять друг с другом, например:
%~DPn — из переменной %n выделяется имя диска и путь,
%~NXn — из переменной %n выделяется имя файла и расширение.
Рассмотрим следующий пример. Пусть мы находимся в каталоге C:TEXT и запускаем пакетный файл с параметром Рассказ.doc ( %1=Рассказ.doc ). Тогда применение операторов, описанных в табл. 3.1, к параметру %1 даст следующие результаты:
%~F1=C:TEXTРассказ.doc %~D1=C: %~P1=TEXT %~N1=Рассказ %~X1=.doc %~DP1=C:TEXT %~NX1=Рассказ.doc
Предыстория :
Язык Cmd берёт начало в те года когда создавался Windows 3.1 и выше. Язык Cmd похож на язык Bat. Но на самом то деле это один и тот же язык (формат).
При создании Windows нужна была командная строка для выполнения команд по типу (загрузка файлов, удаление, перемещение и т.д).
Создать файл в разрешении .cmd или .bat легко. Нужно создать простой текстовый фаел в windows. После чего переименовать в файле формат .txt на .cmd или .bat.
Изучение языка:
Язык этот очень лёгок. Все команды в нём на английском языке. Так же все команды укрощены. Поэтому этот язык можно изучать для начала.
Команды в этом языке выполняют функции OC (только Windows) — к примеру без дополнений вы не запустите этот язык на Linux или Mac.
Но это потому что Mac или Linux написаны на других языках программирования и у них другие функции.
Можно предположить что (Если Windows написана на acembler то .cmd и .bat это acembler ).
Если вы знали уже язык программирования acembler то вы очень быстро изучите .bat и .cmd язык.
Команды:
Команд в языке очень мало на первый взгляд. Но команд очень много. Свои команды конечно не придумать как в JavaScript но хоть что то.
Некоторые можно найти в командной строке .bat и .cmd формата. Прописав там (cmd — вывод командной строки от Windows) и ниже прописав (help — помощь по командам).
ПРЕДУПРЕЖДАЮ ЯЗЫК ПЕРЕВОДА ЗНАЧЕНИЙ КОМАНД ЗАВИСИТ ОТ ЯЗЫКА WINDOWS ——
Все команды в Windows:
Так же есть всё тут — http://cmd-command.ru/komandy-cmd
append — позволяет программам открывать файлы в указанных каталогах так , словно они находятся в текущем каталоге.
arp — отображение и изменение таблиц преобразования IP-адресов в физические, используемые протоколом разрешения адресов.
assoc — вывод либо изменение сопоставлений по расширениям имён файлов.
at — команда предназначена для запуска программ в указанное время.
atmsdm — Контроль подключений и адресов, зарегистрированных диспетчером вызовов ATM в сетях с асинхронным режимом передачи (ATM).
attrib — изменение атрибутов файлов и папок.
auditusr — задаёт политику аудита пользователей.
break — включение режима обработки клавиш CTRL+C.
bootcfg — эта программа командной строки может быть использована для настройки , извлечения , изменения или удаления параметров командной строки в файле Boot.ini.
cacls — просмотр изменение таблиц управления доступом ACL к файлам.
call — вызов одного пакетного файла из другого.
cd — вывод имени либо изменение текущей папки.
chcp — вывод либо изменение активной кодовой страницы.
chdir — вывод либо смена текущей папки.
chkdsk — проверка диска и вывод отчёта.
chkntfs — выводит или изменяет параметры проверки диска во время загрузки.
ciddaemon — сервис индексации файлов.
cipher — программа шифрования файлов.
cls — очистка экрана интерпретатора.
cmd — запуск нового окна командной строки.
cmstp — установка профилей диспетчера подключений.
color — устанавливает цвет для текста и фона в текстовых окнах.
comp — сравнение содержимого двух файлов или наборов файлов.
compact — просмотр и изменение параметров сжатия файлов в разделах NTFS.
convert — преобразование файловой системы тома FAT в NTFS.
copy — копирование одного или нескольких файлов.
date — вывод либо установка текущей даты.
debug — средство для отладки и редактирования программ.
defrag — дефрагментация диска.
del — удаление одного или нескольких файлов.
devcon — альтернатива диспетчера устройств.
diantz — тоже что и MAKECAB.
dir — вывод списка файлов и подпапок из указанного каталога.
diskcomp — сравнение содержимого двух гибких дисков.
diskcopy — копирование содержимого одного гибкого диска на другой.
diskpart — использования сценария diskpart.
diskperf — счетчик производительности дисков.
doskey — редактирование и повторный вызов команд Windows; создание макросов DOSKey.
driverquery — просмотр списка установленных драйверов устройств и их свойства.
echo — вывод сообщений и переключение режима отображения команд на экране.
edit — запуск редактора MS-DOS.
endlocal — завершение локализации изменений среды в пакетном файле.
edlin — запуск построчного текстового редактора.
erase — удаление одного или нескольких файлов.
esentutl — обслуживание утилит для Microsoft (R) баз данных Windows.
eventcreate — эта команда позволяет администратору создать запись об особом событии в указанном журнале событий
.
eventtriggers — эта команда позволяет администратору отобразить и настроить триггеры событий в локальной или удаленной системе.
exe2bin — преобразование EXE-файлов в двоичный формат.
exit — завершение командной строки.
expand — распаковка сжатых файлов.
fc — сравнение двух файлов или двух наборов файлов и вывод различий между ними.
find — поиск текстовой строки в одном или нескольких файлах.
findstr — поиск строк в файлах.
finger — вывод сведений о пользователях указанной системы.
fltmc — работа с фильтром нагрузки драйверов.
for — выполнение указанной команды для каждого файла набора.
forcedos — сопоставление приложений MS-DOS, которые не распознаются системой Microsoft Windows XP.
format — форматирование диска для работы с Windows.
fontview — программа просмотра шрифтов.
fsutil — управление точками повторной обработки, управление разреженными файлами, отключение тома или расширение тома.
ftp — программа передачи файлов.
ftype — просмотр и изменение типов файлов, сопоставленных с расширением имен файлов.
getmac — отображает MAC-адрес одного или нескольких сетевых адаптеров компьютера.
goto — передача управления содержащей метку строке пакетного файла.
gpresult — отображает результирующую политику (RSoP) для указанного пользователя и компьютера.
gpupdate — выполнение обновления групповых политик.
graftabl — выбор кодовой страницы для отображения символов национальных алфавитов в графическом режиме
.
help — выводит не полный список команд, которые используются в cmd.
hostname — отображение имени компьютера.
if — оператор условного выполнения команд в пакетном файле.
ipconfig — вывод маску подсети, стандартный шлюз и информацию о вашем IP.
ipxroute — программа управления маршрутизацией NWLink IPX.
label — создание, изменение и удаление меток тома для диска.
lodctr — обновление имен счётчиков и поясняющего текста для расширенного счётчика.
logman — управление расписанием для счетчиков производительности и журнала трассировки событий.
logoff — завершение сеанса Windows.
lpq — отображение состояния очереди удалённой очереди печати lpq.
lpr — направляет задание печати на сетевой принтер.
lsass — сервер определения локальной защиты.
makecab — архивирование файлов в cab-архив.
md — создание папки.
mem — выводит сведения об используемой и свободной памяти.
mkdir — создание папки с расширенной функциональностью.
mmc — открытие окна консоли MMC.
mode – отладка системных устройств.
mofcomp — 32-разр. компилятор Microsoft (R) MOF.
more — последовательный вывод данных по частям размером в один экран.
mountvol — просмотр, создание и удаление точек подключения тома.
move — перемещение и переименование файлов и каталогов.
mqbkup — утилита архивирования и восстановления очереди сообщений.
mqsvc — Обеспечивает инфраструктуру для работы распределенных приложений.
mrinfo — Работа с многоадресными рассылками.
msg — отправка сообщений пользователю.
msiexec — запуск установщика Windows.
nbtstat — отображение статистики протокола и текущих подключений TCP/IP с помощью NBT (NetBIOS через TCP/IP).
net — пакет приложений предназначенный для работы с сетью.
net1 — тоже самое что и net.
netsh — локальное или удаленное отображение и изменение параметров сети.
netstat — отображение статистики протоколов и текущих сетевых подключений TCP/IP.
nlsfunc — загрузка сведений о национальных стандартах.
nslookup — вывод информации, предназначенный для диагностики DNS.
ntbackup — запуск мастера архивирования.
ntsd — отладчик командной строки.
odbcconf — настройка драйвера ODBC.
openfiles — эта команда позволяет пользователю вывести список открытых файлов и папок, которые были открыты в системе.
pagefileconfig — настройка файлов подкачки и виртуальной памяти.
path — вывод либо установка пути поиска исполняемых файлов.
pathping — вывод информации о скрытый сетях и потери данных.
pause — приостанавливает выполнение сценария cmd.
pentnt — обнаруживает ошибки деления с плавающей точкой процессора Pentium, отключает аппаратную обработку чисел с плавающей точкой и включает эмуляции операций с плавающей точкой.
perfmon — открывает окно «Производительность».
ping — проверяет соединение с другим компьютером.
ping6 — команда проверки связи.
popd — изменяет одну папку на ту, которая была сохранена командой PUSHD.
powercfg — эта команда позволяет управлять электропитанием системы.
print — печать текстового файла.
prncnfg — настройка параметров принтера.
prompt — изменение приглашения командной строки cmd.exe.
proxycfg — инструмент настройки proxy соединения.
pushd — сохранения значений текущего каталога для использования POPD командой.
qappsrv — отображает доступные серверы терминалов в сети.
qprocess — отображает информацию о процессах.
qwinsta — отображение информации о сеансах терминалов.
rasdial — интерфейс связи из командной строки для клиента службы удалённого доступа.
rcp — обмен файлами с компьютером, на котором выполняется служба RCP.
recover — восстановление сохранившихся данных на поврежденном диске.
reg — редактирование системного реестра через командную строку.
regsvr32 — сервер регистрации.
relog — создает новый журнал производительности из уже имеющего.
rem — помещение комментария в пакетный файл.
ren — переименование файлов и папок.
rename — переименование файлов и папок.
replace — замена файлов.
reset — утилита сброса служб терминалов.
rexec — выполнение команд на удаленных узлах на которых выполняется служба rexec.
rd — удаление папки.
rmdir — удаление папки.
route — обработка таблиц сетевых маршрутов.
rsh — выполнение команд на удаленных узлах, на которых запущена служба RSH.
rsm — управление ресурсами носителей с помощью службы «Съемные ЗУ».
runas — использование приложений от имени другого пользователя.
rundll32 — запуск стандартных команд-функций заложенных в dll.
rwinsta — сброс значений подсистем оборудования и программ сеанса в начальное состояние.
sc — установление связи с NT Service Controller и ее услугами.
schtasks — создание, удаление, изменение и опрос запланированных задачи в локальной или удаленной системе.
sdbinst — установщик базы данных совместимости.
secedit – автоматизация задач настройки безопасности.
set — вывод, присваивание и удаления переменных в командной строке.
setlocal — начало локализации изменений среды в пакетном файле.
setver — задает номер версии, который MS-DOS сообщает программе.
sfc — Проверка файлов Windows.
shadow — позволяет наблюдать за другим сеансом служб терминалов.
shift — изменение содержимого подставляемых параметров для пакетного файла.
shutdown — завершение сеанса, выключение и перезагрузка системы Windows.
smbinst — это процесс, принадлежащий System Management BIOS Driver Installer.
sort — сортирование файлов.
start — запуск программы или команды в отдельном окне.
subst — сопоставление имени диска указанному пути.
systeminfo — вывод информации о настройках системы.
taskkill — завершение одного или нескольких процессов.
tasklist — показывает запущенные программы и процессы выполняемые в данный момент.
tcmsetup — установка клиента телефонии.
tftp — обмен файлами с удаленным компьютером, на котором запущена служба TFTP.
time — просмотр или изменение текущего времени.
title — назначение заголовка окна интерпретатора.
tlntadmn — удаленное управление компьютером.
tracert — трассировка маршрута к указанному узлу.
tracerpt — обрабатывает двоичные файлы журнала отслеживания событий или потоки данных.
tracert6 — версия tracert для протокола IPv6.
tree — вывод структуры диска или каталога в виде дерева.
tscon — присоединяет сеанс пользователя к сеансу терминала.
tsdiscon — отключение сеанса терминала.
tskill — прекращение процесса.
tsshutdn — завершение работы сервера в установленном порядке.
type — вывод на экране содержимого текстовых файлов.
typeperf — выводит сведения о производительности на экран или в журнал.
unlodctr — удаление имен счётчиков и поясняющего текста для расширенного счётчика.
userinit — проводник системы Windows.
ver — вывод сведений о версии Windows.
verify — установка режима проверки правильности записи файлов на диск.
vol — вывод метки и серийного номера тома для диска
vssadmin — инструмент командной строки теневого копирования тома.
w32tm — диагностика службы времени.
wbemtest — тестер инструментария управления Windows.
winver — вывод информации о версии Windows.
wmic — инструмент для написания сценариев.
xcopy — копирование файлов и дерева папок.
Это весь список cmd команд, которые присутствуют в windows.
Как официально подтверждено Рича Тернера MS, изначально написано на C
Cmd is a Win32 app written entirely in ‘C’ — this is important since one of the key goals of NT was to be portable across many different processor and machine architectures
Но некоторые из них были перенесены на C++ на данный момент
Если вы посмотрите на внутренняя структура последней Windows Console, вы увидите, что он использует Map, Collection, что предполагает, что он, вероятно, использует некоторый C++ / CX
Если вас это интересует, то conhost.exe также был открыт в виде нового терминала Windows.
The Windows console host, conhost.exe, is Windows’ original command-line user experience. It implements Windows’ command-line infrastructure, and is responsible for hosting the Windows Console API, input engine, rendering engine, and user preferences. The console host code in this repository is the actual source from which the conhost.exe in Windows itself is built.
https://github.com/microsoft/terminal
Вы можете найти больше хороших статей с подробной информацией в Блог о командной строке Windows
Внешний вид оболочки (англ. Command line interface, CLI) — разновидность текстового интерфейса (CUI) между человеком и компьютером, в котором инструкции компьютеру даются только путём ввода с клавиатуры текстовых строк (команд). Также известен под названием консоль.
Интерфейс командной строки противопоставляется системам управления программой на основе меню, а также различным реализациям графического интерфейса.
Формат вывода информации в интерфейсе командной строки не регламентируется; обычно это также простой текстовый вывод, но может быть и графическим, звуковым и т. д.
Содержание
- 1 Назначение
- 2 Формат команды
- 3 Применение
- 3.1 В операционных системах
- 3.2 В компьютерных играх
- 3.3 В других программах
- 4 Достоинства и недостатки
- 5 См. также
Назначение
На устройстве-консоли, которое печатало текст на бумаге, интерфейс командной строки был единственным возможным. На видеотерминалах интерфейс командной строки применяется по таким причинам:
- Небольшой расход памяти по сравнению с системой меню.
- В современном программном обеспечении имеется большое число команд, многие из которых нужны крайне редко. Поэтому даже в некоторых программах с графическим интерфейсом применяется командная строка: набор команды (при условии, что пользователь знает эту команду) осуществляется гораздо быстрее, чем, например, навигация по меню.
- Естественное расширение интерфейса командной строки — пакетный интерфейс. Его суть в том, что в файл обычного текстового формата записывается последовательность команд, после чего этот файл можно выполнить в программе, что возымеет такой же (не меньший) эффект, как если бы эти команды были по очереди введены в командную строку. Примеры — bat-файлы в Windows, shell-скрипты в Unix-системах.
Если программа полностью или почти полностью может управляться командами интерфейса командной строки и поддерживает пакетный интерфейс, умелое сочетание интерфейса командной строки с графическим предоставляет пользователю очень мощные возможности.
Формат команды
Наиболее общий формат команд (в квадратные скобки помещены необязательные части):
[символ_начала_команды]имя_команды [параметр_1 [параметр_2 […]]]
Символ начала команды может быть самым разным, однако чаще всего для этой цели используется косая черта (/
). Если строка вводится без этого символа, выполняется некоторая базовая команда: например, строка «Привет
» в /msg Привет». Если же такой базовой команды нет, символ начала команды отсутствует вообще (как, например, в
- параметры разделяются пробелами (и отделяются от названия команды пробелом)
- параметры, содержащие пробелы, обрамляются кавычками-апострофами (
'
) или двойными кавычками ("
) - если параметр используется для обозначения включения какой-либо опции, выключенной по умолчанию, он начинается с косой черты (
/
) или дефиса (-
) - если параметр используется для включения/выключения какой-либо опции, он начинается (или заканчивается) знаком плюс или минус (для включения и выключения соответственно)
- если параметр указывает действие из группы действий, назначенных команде, он не начинается со специальных символов
- если параметр указывает объект, к которому применяется действие команды, он не начинается со специальных символов
- если параметр указывает дополнительный параметр какой-либо опции, то он имеет формат /опция:дополнительный_параметр (вместо косой черты также может употребляться дефис)
Например, в некоей абстрактной игре может быть такая команда:
/map dm1 /skill:2
/
— символ начала командыmap
— название команды (переход на другой уровень)dm1
— обязательный параметр (название уровня)/skill:2
— дополнительный параметр (задание уровня сложности)
Применение
Основные сферы применения интерфейса командной строки:
- операционные системы
- чаты
- компьютерные игры
В операционных системах
Основное применение интерфейса командной строки — интерфейс операционной системы. В Windows язык командной строки не имеет чёткой стандартизации, однако существует стандарт командной строки GNU (см. командная оболочка UNIX).
В компьютерных играх
Изначально консоль в играх использовалась для отладки.
Как только появился интерфейс командной строки, стали появляться и игры, его использующие, особенно актуально это было на тех платформах, где более сложные интерфейсы (графические) было невозможно реализовать вследствие аппаратных ограничений.
Наиболее ярким примером игр, использующих интерфейс командной строки, могут быть названы текстовые квесты, а также сетевые многопользовательские ролевые игры — MUD. Команды в таких играх вводятся на так называемом псевдоестественном языке.
Во многих графических играх присутствует консоль для облегчения доступа к настройкам игры, поскольку в сложных играх реализовать все команды через систему меню неудобно. Первая такая игра — ~» (тильда); реже Enter. Консоль позволяет вносить изменения в настройки игры оперативнее, чем меню — например, набрать name Terminator
быстрее, чем найти то меню, в котором вводится имя игрока, и ввести Terminator.
Также консоль предоставляет возможность изменять настройки назначения горячих клавиш, что может использоваться для обмана соперника в многопользовательских играх, например предложением ввести команду unbindall
, отменяющую все горячие клавиши, в том числе и отвечающие за движение игрока.
Интерфейс, который предоставляется моддерам, не всегда позволяет менять меню; но он всегда позволяет добавлять свои консольные команды. Например, в DotA (карте для игры Warcraft III) режим игры задаёт участник, играющий синими, через консоль.
В других программах
- Vim
- различные клиенты
Достоинства и недостатки
Достоинства:
- Любую команду можно вызвать небольшим количеством нажатий.
- Пакетные файлы — это, по сути, простейшая программируемость.
- Можно управлять программами, не имеющими графического интерфейса (например, выделенным сервером).
- Просмотрев содержимое консоли, можно повторно увидеть промелькнувшее сообщение, которое вы не успели прочитать.
Недостатки:
- Интерфейс командной строки не является дружественным для пользователей, которые начали знакомство с компьютером с графического режима.
- Искать неизвестную команду по справочникам не менее сложно, чем отыскивать в меню нужную команду.
- Ввод некоторых параметров с клавиатуры может быть затруднительным. Подбор громкости с помощью озвученного ползунка позволяет выставить подходящую громкость быстрее, чем из командной строки.
- Если же в программе должен быть полноценный скриптовый язык, приходится либо поддерживать два разных языка (консольный и скриптовый), либо отказываться от командной строки в пользу скриптового языка, либо совмещать эти два языка (что отрицательно сказывается на удобстве программирования).
См. также
- Текстовый интерфейс
- CMD
Аннотация: Описываются возможности языка командных файлов: работа с переменными и параметрами командной строки, реализация циклов, условных операторов и операторов перехода. Даются примеры обработки текстовых файлов с помощью командных файлов
Язык интерпретатора Cmd.exe. Командные файлы
Язык оболочки командной строки (shell language) в Windows реализован в виде командных (или пакетных) файлов. Командный файл в Windows — это обычный текстовый файл с расширением bat или cmd, в котором записаны допустимые команды операционной системы (как внешние, так и внутренние), а также некоторые дополнительные инструкции и ключевые слова, придающие командным файлам некоторое сходство с алгоритмическими языками программирования. Например, если записать в файл deltmp.bat следующие команды:
C:\ CD %TEMP% DEL /F *.tmp
и запустить его на выполнение (аналогично исполняемым файлам с расширением com или exe), то мы удалим все файлы во временной директории Windows. Таким образом, исполнение командного файла приводит к тому же результату, что и последовательный ввод записанных в нем команд. При этом не проводится никакой предварительной компиляции или проверки синтаксиса кода; если встречается строка с ошибочной командой, то она игнорируется. Очевидно, что если вам приходится часто выполнять одни и те же действия, то использование командных файлов может сэкономить много времени.
Вывод сообщений и дублирование команд
По умолчанию команды пакетного файла перед исполнением выводятся на экран, что выглядит не очень эстетично. С помощью команды ECHO OFF можно отключить дублирование команд, идущих после нее (сама команда ECHO OFF при этом все же дублируется). Например,
REM Следующие две команды будут дублироваться на экране … DIR C:\ ECHO OFF REM А остальные уже не будут DIR D:\
Для восстановления режима дублирования используется команда ECHO ON. Кроме этого, можно отключить дублирование любой отдельной строки в командном файле, написав в начале этой строки символ @, например:
ECHO ON REM Команда DIR C:\ дублируется на экране DIR C:\ REM А команда DIR D:\ — нет @DIR D:\
Таким образом, если поставить в самое начало файла команду
то это решит все проблемы с дублированием команд.
В пакетном файле можно выводить на экран строки с сообщениями. Делается это с помощью команды
Например,
Команда ECHO. (точка должна следовать
непосредственно за словом «ECHO»)
выводит на экран пустую строку. Например,
@ECHO OFF ECHO Привет! ECHO. ECHO Пока!
Часто бывает удобно для просмотра сообщений, выводимых из пакетного файла, предварительно полностью очистить экран командой CLS.
Используя механизм перенаправления ввода/вывода (символы > и >>), можно направить сообщения, выводимые командой ECHO, в определенный текстовый файл. Например:
@ECHO OFF ECHO Привет! > hi.txt ECHO Пока! >> hi.txt
С помощью такого метода можно, скажем,
заполнять файлы-протоколы с отчетом о
произведенных действиях. Например:
@ECHO OFF REM Попытка копирования XCOPY C:\PROGRAMS D:\PROGRAMS /s REM Добавление сообщения в файл report.txt в случае REM удачного завершения копирования IF NOT ERRORLEVEL 1 ECHO Успешное копирование >> report.txt
Использование параметров командной строки
При запуске пакетных файлов в командной строке можно указывать произвольное число параметров, значения которых можно использовать внутри файла. Это позволяет, например, применять один и тот же командный файл для выполнения команд с различными параметрами.
Для доступа из командного файла к параметрам командной строки применяются символы %0, %1, …, %9 или %*. При этом вместо %0 подставляется имя выполняемого пакетного файла, вместо %1, %2, …, %9 — значения первых девяти параметров командной строки соответственно, а вместо %* — все аргументы. Если в командной строке при вызове пакетного файла задано меньше девяти параметров, то «лишние» переменные из %1 – %9 замещаются пустыми строками. Рассмотрим следующий пример. Пусть имеется командный файл copier.bat следующего содержания:
@ECHO OFF CLS ECHO Файл %0 копирует каталог %1 в %2 XCOPY %1 %2 /S
Если запустить его из командной строки с двумя параметрами, например
copier.bat C:\Programs D:\Backup
то на экран выведется сообщение
Файл copier.bat копирует каталог C:\Programs в D:\Backup
и произойдет копирование каталога C:\Programs со всеми его подкаталогами в D:\Backup.
При необходимости можно использовать более девяти параметров командной строки. Это достигается с помощью команды SHIFT, которая изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0, значение %2 – в %1 и т.д. Замещаемому параметру %9 присваивается значение параметра, следующего в командной строке за старым значением %9. Если же такой параметр не задан, то новое значение %9 — пустая строка.
Рассмотрим пример. Пусть командный файл my.bat вызван из командной строки следующим образом:
Тогда %0=my.bat, %1=p1, %2=p2, %3=p3, параметры %4 – %9 являются пустыми строками. После выполнения команды SHIFT значения замещаемых параметров изменятся следующим образом: %0=p1, %1=p2, %2=p3, параметры %3 – %9 – пустые строки.
При включении расширенной обработки команд SHIFT поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть числом от 0 до 9.
Например, в следующей команде:
параметр %2 заменяется на %3, %3 на %4 и т.д., а параметры %0 и %1 остаются без изменений.
Команда, обратная SHIFT (обратный сдвиг), отсутствует. После выполнения SHIFT уже нельзя восстановить параметр (%0), который был первым перед сдвигом. Если в командной строке задано больше десяти параметров, то команду SHIFT можно использовать несколько раз.
В командных файлах имеются некоторые возможности синтаксического анализа заменяемых параметров. Для параметра с номером n (%n) допустимы синтаксические конструкции (операторы), представленные в табл. 3.1.
Операторы | Описание |
---|---|
%~Fn | Переменная %n расширяется до полного имени файла |
%~Dn | Из переменной %n выделяется только имя диска |
%~Pn | Из переменной %n выделяется только путь к файлу |
%~Nn | Из переменной %n выделяется только имя файла |
%~Xn | Из переменной %n выделяется расширение имени файла |
%~Sn | Значение операторов N и X для переменной %n изменяется так, что они работают с кратким именем файла |
%~$PATH:n | Проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %n заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку. Естественно, здесь переменную PATH можно заменить на любое другое допустимое значение |
Данные синтаксические конструкции можно объединять друг с другом, например:
%~DPn — из переменной %n выделяется имя диска и путь,
%~NXn — из переменной %n выделяется имя файла и расширение.
Рассмотрим следующий пример. Пусть мы находимся в каталоге C:\TEXT и запускаем пакетный файл с параметром Рассказ.doc ( %1=Рассказ.doc ). Тогда применение операторов, описанных в табл. 3.1, к параметру %1 даст следующие результаты:
%~F1=C:\TEXT\Рассказ.doc %~D1=C: %~P1=\TEXT\ %~N1=Рассказ %~X1=.doc %~DP1=C:\TEXT\ %~NX1=Рассказ.doc
Внешний вид оболочки bash
Интерфейс командной строки (англ. Command line interface, CLI) — разновидность текстового интерфейса (CUI) между человеком и компьютером, в котором инструкции компьютеру даются в основном путём ввода с клавиатуры текстовых строк (команд), в UNIX-системах возможно применение мыши[1]. Также известен под названием консоль.
Интерфейс командной строки противопоставляется системам управления программой на основе меню, а также различным реализациям графического интерфейса.
Формат вывода информации в интерфейсе командной строки не регламентируется; обычно это также простой текстовый вывод, но может быть и графическим, звуковым и т. д.
Содержание
- 1 Назначение
- 2 Формат команды
- 3 Применение
- 3.1 В операционных системах
- 3.2 В компьютерных играх
- 3.3 В других программах
- 4 Достоинства
- 5 Недостатки
- 6 См. также
- 7 Примечания
Назначение[править | править вики-текст]
На устройстве-консоли, которое печатало текст на бумаге, интерфейс командной строки был единственным возможным. На видеотерминалах интерфейс командной строки применяется по таким причинам:
- Небольшой расход памяти по сравнению с системой меню.
- В современном программном обеспечении имеется большое число команд, многие из которых нужны крайне редко. Поэтому даже в некоторых программах с графическим интерфейсом применяется командная строка: набор команды (при условии, что пользователь знает эту команду) осуществляется гораздо быстрее, чем, например, навигация по меню.
- Естественное расширение интерфейса командной строки — пакетный интерфейс. Его суть в том, что в файл обычного текстового формата записывается последовательность команд, после чего этот файл можно выполнить в программе, что возымеет такой же (не меньший) эффект, как если бы эти команды были по очереди введены в командную строку. Примеры — .bat-файлы в DOS и Windows, shell-скрипты в Unix-системах.
Если программа полностью или почти полностью может управляться командами интерфейса командной строки и поддерживает пакетный интерфейс, умелое сочетание интерфейса командной строки с графическим предоставляет пользователю очень мощные возможности.
Формат команды[править | править вики-текст]
Наиболее общий формат команд (в квадратные скобки помещены необязательные части):
[символ_начала_команды]имя_команды [параметр_1 [параметр_2 […]]]
Символ начала команды может быть самым разным, однако чаще всего для этой цели используется косая черта (/
). Если строка вводится без этого символа, выполняется некоторая базовая команда: например, строка «Привет» в IRC эквивалентна вводу «/msg Привет
». Если же такой базовой команды нет, символ начала команды отсутствует вообще (как, например, в DOS).
Параметры команд могут иметь самый разный формат. В основном применяются следующие правила:
- параметры разделяются пробелами (и отделяются от названия команды пробелом)
- параметры, содержащие пробелы, обрамляются кавычками-апострофами (
'
) или двойными кавычками ("
) - если параметр используется для обозначения включения какой-либо опции, выключенной по умолчанию, он начинается с косой черты (
/
) или дефиса (-
) - если параметр используется для включения/выключения какой-либо опции, он начинается (или заканчивается) знаком плюс или минус (для включения и выключения соответственно)
- если параметр указывает действие из группы действий, назначенных команде, он не начинается со специальных символов
- если параметр указывает объект, к которому применяется действие команды, он не начинается со специальных символов
- если параметр указывает дополнительный параметр какой-либо опции, то он имеет формат
/опция:дополнительный_параметр
(вместо косой черты также может употребляться дефис)
Например, в некоей абстрактной игре может быть такая команда:
/map dm1 /skill:2
/
— символ начала командыmap
— название команды (переход на другой уровень)dm1
— обязательный параметр (название уровня)/skill:2
— дополнительный параметр (задание уровня сложности)
Применение[править | править вики-текст]
Основные сферы применения интерфейса командной строки:
- операционные системы
- чаты
- компьютерные игры
В операционных системах[править | править вики-текст]
Основное применение интерфейса командной строки — интерфейс операционной системы. В Windows язык командной строки не имеет чёткой стандартизации, однако существует стандарт командной строки POSIX и его модификация в рамках GNU.
В компьютерных играх[править | править вики-текст]
Изначально консоль в играх использовалась для отладки.
Как только появился интерфейс командной строки, стали появляться и игры, его использующие, особенно актуально это было на тех платформах, где более сложные интерфейсы (графические) было невозможно реализовать вследствие аппаратных ограничений.
Наиболее ярким примером игр, использующих интерфейс командной строки, могут быть названы текстовые квесты, а также сетевые многопользовательские ролевые игры — MUD. Команды в таких играх вводятся на так называемом псевдоестественном языке.
Во многих графических играх присутствует консоль для облегчения доступа к настройкам игры, поскольку в сложных играх реализовать все команды через систему меню неудобно. Первая такая игра — Quake. Стандартная кнопка для вызова консоли — ~ (тильда); реже ↵ Enter‘, ещё реже ⇧ Shift+D . Консоль позволяет вносить изменения в настройки игры оперативнее, чем меню — например, набрать name Terminator
быстрее, чем найти то меню, в котором вводится имя игрока, и ввести Terminator.
Также консоль предоставляет возможность изменять настройки назначения горячих клавиш, что может использоваться для обмана соперника в многопользовательских играх, например, предложением ввести команду unbindall
, отменяющую все горячие клавиши, в том числе и отвечающие за движение игрока.
Интерфейс, который предоставляется моддерам, не всегда позволяет менять меню; но он всегда позволяет добавлять свои консольные команды. Например, в DotA (карте для игры Warcraft III) режим игры задаёт участник, играющий синими, через консоль.
В других программах[править | править вики-текст]
- САПР
- AutoCAD
- текстовые редакторы
- Vim
- Браузеры
- Vimperator — расширение для браузера Firefox, позволяющее управлять им, как редактором Vim
- различные клиенты IRC
Достоинства[править | править вики-текст]
- Легкость автоматизации. Shell script в UNIX-подобных системах является полноценным интерпретируемым языком программирования и способен автоматизировать любую системную задачу. В Windows присутствует их примитивный аналог — пакетные файлы, и более мощный аналог — powershell. По сути, это — простейшая программируемость. С графическим интерфейсом без поддержки программой командной строки это сделать почти невозможно.
- Можно управлять программами, не имеющими графического интерфейса (например, выделенным сервером).
- Любую команду можно вызвать небольшим количеством нажатий.
- Можно обращаться к командам для разных исполнимых файлов почти мгновенно и непосредственно, тогда как в GUI приходится сначала запускать, а затем закрывать графический интерфейс для каждого исполнимого файла.
- Просмотрев содержимое консоли, можно повторно увидеть промелькнувшее сообщение, которое вы не успели прочитать.
- Можно пользоваться удаленным компьютером с любого устройства подключаемого к Интернету или локальной сети (ПК, субноутбук, КПК, сотовый телефон, портативная игровая консоль) без особых затрат трафика (единицы килобайт за сеанс).
- Отсутствие деталей интерфейса, таких как пусковые панели и рамки окон, что при равных разрешениях позволяет вместить значительно больше текста на страницу.
- Возможность работы через стандартизированные линии передачи данных, такие как RXD, TXD в RS232, на небольшой скорости (наиболее часто 9600 бод), делает этот интерфейс основным, а порой и единственно возможным, для встраиваемых систем, систем с небольшой вычислительной мощностью, иных недорогих и экономичных устройств. Принтеры, жёсткие диски, роутеры, датчики пожарной охраны — лишь малая часть примеров такого оборудования.
- Легче отладка сообществом. Если пользователь столкнулся с проблемой или ошибкой, на интернет-форуме достаточно оставить копию диалога пользователя и ЭВМ. Такой листинг имеет однозначное толкование (в том числе по порядку ввода и появления сообщений), в отличие от графического интерфейса, когда нужно не только отправить копию экрана, и порой не одну (что уже само по себе может быть проблемно), но также и входящие данные (какую «галочку» и где нажать, и тому подобное). К тому же, копия экрана одной и той же программы может существовать на разных языках, что усложнит отладку международным сообществом.
Недостатки[править | править вики-текст]
- Интерфейс командной строки не является «дружелюбным» для пользователей, которые начали знакомство с компьютером с графического режима, из-за почти отсутствующих возможностей обнаружения (англ. discoverabililty).[2]
- Необходимость изучения синтаксиса команд и запоминания сокращений, осложняющаяся тем, что каждая команда может иметь свои собственные обозначения.[2]
- Без автодополнения, ввод длинных и содержащих спецсимволы параметров с клавиатуры может быть затруднительным.
- Отсутствие «аналогового» ввода. Например подбор громкости с помощью озвученного ползунка позволяет выставить подходящую громкость быстрее, чем командой вроде
aumix -v 90
. (Однако, озвученный ползунок вполне может быть псевдографическим, что было выполнено в большинстве консольных плееров).
См. также[править | править вики-текст]
- bash
- Cmd.exe
- Графический интерфейс пользователя
Примечания[править | править вики-текст]
- ↑ Howto: FreeBSD configure or use mouse to copy and paste at a terminal
- ↑ 1 2 Max Steenbergen, Command Lines: Alive & Kicking, Article No. 575 November 4, 2010, UX Magazine
Предыстория :
Язык Cmd берёт начало в те года когда создавался Windows 3.1 и выше. Язык Cmd похож на язык Bat. Но на самом то деле это один и тот же язык (формат).
При создании Windows нужна была командная строка для выполнения команд по типу (загрузка файлов, удаление, перемещение и т.д).
Создать файл в разрешении .cmd или .bat легко. Нужно создать простой текстовый файл в windows. После чего переименовать в файле формат .txt на .cmd или .bat.
Изучение языка:
Язык этот очень лёгок. Все команды в нём на английском языке. Так же все команды укрощены. Поэтому этот язык можно изучать для начала.
Команды в этом языке выполняют функции OC (только Windows) — к примеру без дополнений вы не запустите этот язык на Linux или Mac.
Но это потому что Mac или Linux написаны на других языках программирования и у них другие функции.
Можно предположить что (Если Windows написана на acembler то .cmd и .bat это acembler ).
Если вы знали уже язык программирования acembler то вы очень быстро изучите .bat и .cmd язык.
Команды:
Команд в языке очень мало на первый взгляд. Но команд очень много. Свои команды конечно не придумать как в JavaScript но хоть что то.
Некоторые можно найти в командной строке .bat и .cmd формата. Прописав там (cmd — вывод командной строки от Windows) и ниже прописав (help — помощь по командам).
ПРЕДУПРЕЖДАЮ ЯЗЫК ПЕРЕВОДА ЗНАЧЕНИЙ КОМАНД ЗАВИСИТ ОТ ЯЗЫКА WINDOWS ——
Все команды в Windows:
Так же есть всё тут — http://cmd-command.ru/komandy-cmd
append — позволяет программам открывать файлы в указанных каталогах так , словно они находятся в текущем каталоге.
arp — отображение и изменение таблиц преобразования IP-адресов в физические, используемые протоколом разрешения адресов.
assoc — вывод либо изменение сопоставлений по расширениям имён файлов.
at — команда предназначена для запуска программ в указанное время.
atmsdm — Контроль подключений и адресов, зарегистрированных диспетчером вызовов ATM в сетях с асинхронным режимом передачи (ATM).
attrib — изменение атрибутов файлов и папок.
auditusr — задаёт политику аудита пользователей.
break — включение режима обработки клавиш CTRL+C.
bootcfg — эта программа командной строки может быть использована для настройки , извлечения , изменения или удаления параметров командной строки в файле Boot.ini.
cacls — просмотр изменение таблиц управления доступом ACL к файлам.
call — вызов одного пакетного файла из другого.
cd — вывод имени либо изменение текущей папки.
chcp — вывод либо изменение активной кодовой страницы.
chdir — вывод либо смена текущей папки.
chkdsk — проверка диска и вывод отчёта.
chkntfs — выводит или изменяет параметры проверки диска во время загрузки.
ciddaemon — сервис индексации файлов.
cipher — программа шифрования файлов.
cls — очистка экрана интерпретатора.
cmd — запуск нового окна командной строки.
cmstp — установка профилей диспетчера подключений.
color — устанавливает цвет для текста и фона в текстовых окнах.
comp — сравнение содержимого двух файлов или наборов файлов.
compact — просмотр и изменение параметров сжатия файлов в разделах NTFS.
convert — преобразование файловой системы тома FAT в NTFS.
copy — копирование одного или нескольких файлов.
date — вывод либо установка текущей даты.
debug — средство для отладки и редактирования программ.
defrag — дефрагментация диска.
del — удаление одного или нескольких файлов.
devcon — альтернатива диспетчера устройств.
diantz — тоже что и MAKECAB.
dir — вывод списка файлов и подпапок из указанного каталога.
diskcomp — сравнение содержимого двух гибких дисков.
diskcopy — копирование содержимого одного гибкого диска на другой.
diskpart — использования сценария diskpart.
diskperf — счетчик производительности дисков.
doskey — редактирование и повторный вызов команд Windows; создание макросов DOSKey.
driverquery — просмотр списка установленных драйверов устройств и их свойства.
echo — вывод сообщений и переключение режима отображения команд на экране.
edit — запуск редактора MS-DOS.
endlocal — завершение локализации изменений среды в пакетном файле.
edlin — запуск построчного текстового редактора.
erase — удаление одного или нескольких файлов.
esentutl — обслуживание утилит для Microsoft (R) баз данных Windows.
eventcreate — эта команда позволяет администратору создать запись об особом событии в указанном журнале событий
.
eventtriggers — эта команда позволяет администратору отобразить и настроить триггеры событий в локальной или удаленной системе.
exe2bin — преобразование EXE-файлов в двоичный формат.
exit — завершение командной строки.
expand — распаковка сжатых файлов.
fc — сравнение двух файлов или двух наборов файлов и вывод различий между ними.
find — поиск текстовой строки в одном или нескольких файлах.
findstr — поиск строк в файлах.
finger — вывод сведений о пользователях указанной системы.
fltmc — работа с фильтром нагрузки драйверов.
for — выполнение указанной команды для каждого файла набора.
forcedos — сопоставление приложений MS-DOS, которые не распознаются системой Microsoft Windows XP.
format — форматирование диска для работы с Windows.
fontview — программа просмотра шрифтов.
fsutil — управление точками повторной обработки, управление разреженными файлами, отключение тома или расширение тома.
ftp — программа передачи файлов.
ftype — просмотр и изменение типов файлов, сопоставленных с расширением имен файлов.
getmac — отображает MAC-адрес одного или нескольких сетевых адаптеров компьютера.
goto — передача управления содержащей метку строке пакетного файла.
gpresult — отображает результирующую политику (RSoP) для указанного пользователя и компьютера.
gpupdate — выполнение обновления групповых политик.
graftabl — выбор кодовой страницы для отображения символов национальных алфавитов в графическом режиме
.
help — выводит не полный список команд, которые используются в cmd.
hostname — отображение имени компьютера.
if — оператор условного выполнения команд в пакетном файле.
ipconfig — вывод маску подсети, стандартный шлюз и информацию о вашем IP.
ipxroute — программа управления маршрутизацией NWLink IPX.
label — создание, изменение и удаление меток тома для диска.
lodctr — обновление имен счётчиков и поясняющего текста для расширенного счётчика.
logman — управление расписанием для счетчиков производительности и журнала трассировки событий.
logoff — завершение сеанса Windows.
lpq — отображение состояния очереди удалённой очереди печати lpq.
lpr — направляет задание печати на сетевой принтер.
lsass — сервер определения локальной защиты.
makecab — архивирование файлов в cab-архив.
md — создание папки.
mem — выводит сведения об используемой и свободной памяти.
mkdir — создание папки с расширенной функциональностью.
mmc — открытие окна консоли MMC.
mode – отладка системных устройств.
mofcomp — 32-разр. компилятор Microsoft (R) MOF.
more — последовательный вывод данных по частям размером в один экран.
mountvol — просмотр, создание и удаление точек подключения тома.
move — перемещение и переименование файлов и каталогов.
mqbkup — утилита архивирования и восстановления очереди сообщений.
mqsvc — Обеспечивает инфраструктуру для работы распределенных приложений.
mrinfo — Работа с многоадресными рассылками.
msg — отправка сообщений пользователю.
msiexec — запуск установщика Windows.
nbtstat — отображение статистики протокола и текущих подключений TCP/IP с помощью NBT (NetBIOS через TCP/IP).
net — пакет приложений предназначенный для работы с сетью.
net1 — тоже самое что и net.
netsh — локальное или удаленное отображение и изменение параметров сети.
netstat — отображение статистики протоколов и текущих сетевых подключений TCP/IP.
nlsfunc — загрузка сведений о национальных стандартах.
nslookup — вывод информации, предназначенный для диагностики DNS.
ntbackup — запуск мастера архивирования.
ntsd — отладчик командной строки.
odbcconf — настройка драйвера ODBC.
openfiles — эта команда позволяет пользователю вывести список открытых файлов и папок, которые были открыты в системе.
pagefileconfig — настройка файлов подкачки и виртуальной памяти.
path — вывод либо установка пути поиска исполняемых файлов.
pathping — вывод информации о скрытый сетях и потери данных.
pause — приостанавливает выполнение сценария cmd.
pentnt — обнаруживает ошибки деления с плавающей точкой процессора Pentium, отключает аппаратную обработку чисел с плавающей точкой и включает эмуляции операций с плавающей точкой.
perfmon — открывает окно «Производительность».
ping — проверяет соединение с другим компьютером.
ping6 — команда проверки связи.
popd — изменяет одну папку на ту, которая была сохранена командой PUSHD.
powercfg — эта команда позволяет управлять электропитанием системы.
print — печать текстового файла.
prncnfg — настройка параметров принтера.
prompt — изменение приглашения командной строки cmd.exe.
proxycfg — инструмент настройки proxy соединения.
pushd — сохранения значений текущего каталога для использования POPD командой.
qappsrv — отображает доступные серверы терминалов в сети.
qprocess — отображает информацию о процессах.
qwinsta — отображение информации о сеансах терминалов.
rasdial — интерфейс связи из командной строки для клиента службы удалённого доступа.
rcp — обмен файлами с компьютером, на котором выполняется служба RCP.
recover — восстановление сохранившихся данных на поврежденном диске.
reg — редактирование системного реестра через командную строку.
regsvr32 — сервер регистрации.
relog — создает новый журнал производительности из уже имеющего.
rem — помещение комментария в пакетный файл.
ren — переименование файлов и папок.
rename — переименование файлов и папок.
replace — замена файлов.
reset — утилита сброса служб терминалов.
rexec — выполнение команд на удаленных узлах на которых выполняется служба rexec.
rd — удаление папки.
rmdir — удаление папки.
route — обработка таблиц сетевых маршрутов.
rsh — выполнение команд на удаленных узлах, на которых запущена служба RSH.
rsm — управление ресурсами носителей с помощью службы «Съемные ЗУ».
runas — использование приложений от имени другого пользователя.
rundll32 — запуск стандартных команд-функций заложенных в dll.
rwinsta — сброс значений подсистем оборудования и программ сеанса в начальное состояние.
sc — установление связи с NT Service Controller и ее услугами.
schtasks — создание, удаление, изменение и опрос запланированных задачи в локальной или удаленной системе.
sdbinst — установщик базы данных совместимости.
secedit – автоматизация задач настройки безопасности.
set — вывод, присваивание и удаления переменных в командной строке.
setlocal — начало локализации изменений среды в пакетном файле.
setver — задает номер версии, который MS-DOS сообщает программе.
sfc — Проверка файлов Windows.
shadow — позволяет наблюдать за другим сеансом служб терминалов.
shift — изменение содержимого подставляемых параметров для пакетного файла.
shutdown — завершение сеанса, выключение и перезагрузка системы Windows.
smbinst — это процесс, принадлежащий System Management BIOS Driver Installer.
sort — сортирование файлов.
start — запуск программы или команды в отдельном окне.
subst — сопоставление имени диска указанному пути.
systeminfo — вывод информации о настройках системы.
taskkill — завершение одного или нескольких процессов.
tasklist — показывает запущенные программы и процессы выполняемые в данный момент.
tcmsetup — установка клиента телефонии.
tftp — обмен файлами с удаленным компьютером, на котором запущена служба TFTP.
time — просмотр или изменение текущего времени.
title — назначение заголовка окна интерпретатора.
tlntadmn — удаленное управление компьютером.
tracert — трассировка маршрута к указанному узлу.
tracerpt — обрабатывает двоичные файлы журнала отслеживания событий или потоки данных.
tracert6 — версия tracert для протокола IPv6.
tree — вывод структуры диска или каталога в виде дерева.
tscon — присоединяет сеанс пользователя к сеансу терминала.
tsdiscon — отключение сеанса терминала.
tskill — прекращение процесса.
tsshutdn — завершение работы сервера в установленном порядке.
type — вывод на экране содержимого текстовых файлов.
typeperf — выводит сведения о производительности на экран или в журнал.
unlodctr — удаление имен счётчиков и поясняющего текста для расширенного счётчика.
userinit — проводник системы Windows.
ver — вывод сведений о версии Windows.
verify — установка режима проверки правильности записи файлов на диск.
vol — вывод метки и серийного номера тома для диска
vssadmin — инструмент командной строки теневого копирования тома.
w32tm — диагностика службы времени.
wbemtest — тестер инструментария управления Windows.
winver — вывод информации о версии Windows.
wmic — инструмент для написания сценариев.
xcopy — копирование файлов и дерева папок.
Это весь список cmd команд, которые присутствуют в windows.