Standard I/O and I/O Redirection
█▌Overview▐█
Starting with version 2.0, DOS supports the UNIX-like concept of
redirection of the Standard Input and Standard Output devices. It is the
basis of a technique which lets one program feed input into or capture
output from another program.
Unless redirected, Standard Input comes from the keyboard and Standard
Output goes to screen; both are functions of the CON device. A parent
process (such as COMMAND.COM) can redirect either Standard Input or Output
or both before passing control to a child process. This can be a powerful
way to pass information from process to process with a minimum of
programming overhead.
See File Handles for a list of pre-defined Standard I/O handles.
Use DOS Character I/O functions or Fns 3fH/40H to read/write Standard I/O.
Use file handle 02H (Standard Error device) with Fn 40H to make sure a
message is displayed.
Use DOS Fn 46H to redirect the Standard I/O.
Use DOS Fn 4bH to execute a child process.
Use DOS Fn 4400H to see if Standard I/O has been redirected.
The Device Attribute of a device driver indicates if the device is to be
used as the default Standard Input and/or Standard Output device.
█▌COMMAND.COM & Standard I/O▐█
The DOS command processor examines each command line for I/O redirection
symbols before it performs an internal command or EXECs a program:
process < filespec EXEC process; keyboard input will come from the file
process > filespec EXEC process; screen output will go to the file
process >> filespec EXEC process; output will be appended to the file
process1 | process2 1. EXEC process1; output goes to temporary file
2. EXEC process2; keyboard input comes from the
temporary file
3. delete the temporary file
Notes: ■ Output redirection with '>' creates the output file, truncating
its length to 0 before the first characters are written.
Use '>>' if you want to append text to the end of an existing
file.
■ You can use the pipe ("|") symbol to chain several DOS commands
and programs together:
DIR | SORT | FIND /v "i" >myfile.txt
■ Each temporary pipe file will have a unique name formed from
hex digits of the current date and time.
Prior to DOS 3.0, the temporary files are created in the
current default directory of the default drive.
With DOS 3.0+, COMMAND.COM looks for the TEMP directory and
puts temporary files there. By setting TEMP to a RAM disk, I/O
piping is much faster.
■ Redirection of the ECHO command is handy for several uses:
ECHO ^L >PRN (force a formfeed on the printer)
ECHO y|DEL *.* (answer "yes" to the "Are you sure?" prompt)
ECHO ATDT 1(213)555-1234 >AUX (dial the phone)
■ Redirect output to the NUL device to get rid of some DOS
messages:
COPY *.COM d: >NUL (avoid the "1 File(s) copied" message)
■ COMMAND.COM will ignore redirection symbols enclosed in quotes:
REM I am using the greater-than sign ">" in this remark
See Also: Handle-Oriented File I/O
DOS Functions
-♦-