Advanced DOS techniques by «phacination»

This guide assumes that you know a little bit about dos including basic commands, the basics of batch files and the use of autoexec.bat. If you are *nix user, you will recognise some of the techniques that I describe in this document. I decided to write this guide because I have never seen these tips in print, and I find them very useful and valuable. I hope you will too!

TIP: Typing '/?' after most commands will display a help page about that command. Try 'dir /?'.

Echo
You will probably know that you can display messages on the screen by using 'echo'. But it is more versatile than it would first appear. You can turn off the prompt, (the 'c:\windows\>' bit) by typing 'echo off'. You can display a blank line by typing 'echo.'. And finally, if you put '@echo off' at the top of a batch file, the commands from the batch file will not be displayed on screen.

Environment Variables
These are named pieces of data that are accessible by all programs. (Including windows programs, VB programmers can use the 'GetEnvironmentVariable' API call to get environment variables). To display all environment variables you use the program that you use to set them, 'set'.

If you type 'dir /?' you will get the help page for this command. Take a look at the line that says 'Switches may be preset in the DIRCMD environment variable'. Dir automatically sorts files and folders by date, but I prefer to see the folders first, then the files ordered by name. Normally I would type 'dir /OGN /P', but by using the DIRCMD environment variable, I can set these as the default parameters with the command 'set DIRCMD=/OGN /P'. Now when I type 'dir', it will automatically use the parameters that I stored in DIRCMD! (I put 'set DIRCMD=/OGN /P' in autoexec.bat so I don't have to type it each time I load DOS.)

The Path Environment Variable
When you type 'set', all the variables are displayed, including one named 'path', which contains a list of directories. These directories are the ones that are searched when you type in a command. For example, when you use fdisk or format, you can be in any directory when you use them even though they are stored in c:\windows\command. They are made available by the inclusion of c:\windows\command in the path variable.

If you want to add a new path to the path variable, and type 'set path=c:\games', you will notice that your directory has replaced all the paths that were in the variable previously. You can avoid this by typing 'set path=c:\games;%path%'. What is going on here? Well, a word enclosed in percentage signs represents a variable. Therefore you are making path contain your path, and the previous contents of path. To see an example, try 'echo %path%' and the contents of path will be displayed.

TIP: there is a program called 'path' that you can use the set the path variable.

Prompt
Have you ever wondered to yourself, "Wouldn't it be cool to be able to change the way the command prompt looks like"? No, me neither, but it is possible. If you type 'set', you will see a line that looks like 'PROMPT=$p$g'. This tells command.com that the prompt should show the path and a right facing chevron. Try changing it around by typing 'set PROMPT=$g$p' and you will get something that looks like '>c:\windows'. There are a whole series of special things you can put into the prompt, for example you can display the current time with '$T'. For a complete list, type 'prompt /?'. (Prompt is a program similar to path, in that it provides and alternative way of changing the prompt variable.)

PRANKSTER TIP: Find a friend's computer and set the prompt to 'c:\windows\$g' so it will look like a normal prompt, but will not change when you friend tries to change directory!

The Insertion Operator.
If you have ever used C++ you will recognise the insertion operator '>>'. You probably be surprised that you can use a version of this in the DOS environment! It is used to redirect the output of a program to a text file instead of the screen. You may want to use it if the output of a command overflows the screen, or you want to print the output. Try 'dir /s >> files.txt'. This will output all files in the current directory and all subdirectories, but append this output to a file named 'files.txt'. You can also use 'dir /s > files.txt'. Notice that in this example there is only one chevron. This will perform as before, but if there is any text in 'files.txt' it will be overwritten.

There is another method of redirecting the output of a command. If you have used a *nix system you will probably be familiar with the pipe '|' symbol. Well, this can also be used in DOS. The most useful application of this is when used with 'more', a program used to display text one page at a time. Try 'dir /s | more' This will be similar to typing 'dir /s /p' (It will display the contents of the current directory and all subdirectories, one page at a time.) Other useful redirections include sending the output to 'sort' and 'find'.

TIP: If using pipe produces a 'too many parameters' error, try replacing the pipe with the Alt+1,2,4 character.

Doskey
Ever used the Unix shell tcsh? There is a program in DOS, called Doskey, which enables some similar operations. It allows the user to scroll through previous typed commands and edit them without having to delete back to the mistake. It also enables frequently used commands to be stored as macros! This is a very handy tool (used by default on WinNT), especially if you use DOS frequently. TIP: add 'doskey /insert' to autoexec.bat to load it by default. For more information including using macros, type 'doskey /?'.

Further Reading
Take a look at 'batricks' by Laurence Soucy for many more cool tips. http://home7.inet.tele.dk/batfiles/intro/contents.htm

Credits


by «phacination»
phacination@hotmail.com