Skip to main content

The Top 12 Reasons You Should Replace CMD.EXE

The default Windows command processor is CMD.EXE. It is a console application that executes the commands you enter at the prompt and runs simple batch files (files with a .BAT or .CMD extension). Unfortunately, the CMD shell has always been woefully lacking in even the most basic features compared to the command processors available in other operating systems. And CMD hasn’t changed significantly since its first appearance in Windows NT 3.1 (which was released in 1993).

What’s wrong with CMD?

12. CMD has (almost) no configuration options. There are a handful of switches you can specify on the startup line, and that’s it.

11. CMD has no extensibility. There’s no way to create plugins to extend CMD; your only choice is writing new external apps.

10. CMD in Windows 8 has 36 internal commands. That’s only a couple more than CMD had in Windows NT 3.1 20 years ago. (Apparently CMD isn’t high on Microsoft’s update list!)

9. CMD can set its foreground and background colors, and … nothing else. No different colors for input and output, colorized directories, or ANSI x3.64.

8. Filename completion is crude and non-programmable.

7. Command line editing in CMD is (extremely) simplistic.

6. File viewing is limited to TYPE. If you want to display a page at a time, pipe to MORE. Want to go back a page, search, scroll up and down? You can’t.

5. Variables in CMD consist of the environment variables and a total of 6 internal variables. All of those internal CMD and Windows settings you’d like to query? Not from CMD.

4. Aliases? Sort of. Just don’t try anything other than the most basic command alias.

3. 20+ years into the Internet era, and CMD’s Internet-capable commands consist of … nothing. No HTTP or FTP file access in any internal command. No SSL or SSH, and no SMTP.

2. Help is nearly non-existent. There is a paragraph or two of text output when you enter the command name followed by a /?. Want to see the command syntax while you’re constructing a command line, or writing a batch file? Help on redirection, command line parsing, batch file creation? Forget it.

1. Batch file creation, editing, and debugging is a demanding task and needs an integrated solution. What is Microsoft’s solution? Edit the batch file in Notepad, run it on the command line, and see what happens.

Microsoft is apparently putting its effort into PowerShell now. PowerShell is certainly a powerful solution (provided you’re a .NET programmer!), but it only solves perhaps four or five of the problems above. It is focused on the scripting language part, and does little for interactive command line usage. (Are you supposed to use Explorer for that?)

Other solutions? Well, there are a handful of Linux shells that have been ported to Windows. If you’re a Linux user who occasionally uses Windows, they’re a good solution and won’t require you to learn new syntax.

Or you could cobble together a few hundred command line utilities (with wildly varying syntax and levels of support) to provide the capabilities that CMD is lacking. But you’re still stuck with that awful interactive command line.

Or try to find a CMD replacement. I’m only aware of two, both from JP Software. (If anybody knows of others, please let me know.) TCC does everything in the list above, and adds a few thousand additional features. The free TCC/LE version is missing the Internet support and batch file IDE, and has about half of the TCC commands and variables (which means it still has 4x as many commands and 20x as many variables as CMD).