1048 lines
50 KiB
Plaintext
1048 lines
50 KiB
Plaintext
|
||
----------------------------------------------------------------
|
||
|
||
BATCH FILES FOR EFFICIENCY - GETTING REAL WORK DONE
|
||
|
||
----------------------------------------------------------------
|
||
|
||
Batch files are one of the hidden treasures within your
|
||
computer. Let's face it, learning and using DOS commands is a
|
||
test of patience, memory and stamina. Batch files are the secret
|
||
weapon which can boost your computer into the fast lane of work
|
||
productivity.
|
||
|
||
Batch files are small software programs which you can prepare in
|
||
the space of only five or ten minutes which automate a variety
|
||
of tasks and customize the computer to your work style. The
|
||
bottom line is that batch files can preserve your sanity in the
|
||
face of arcane, easily-forgotten DOS commands to provide you
|
||
with a menu system for your hard drive, transfer and backup
|
||
files, provide security, start other software programs, activate
|
||
your printer and much more.
|
||
|
||
Amazingly, batch files require that you become familiar with
|
||
only eight commands in addition to the normal DOS commands.
|
||
Working with batch files means you are programming in the most
|
||
literal sense - let's take a tour of the small miracles called
|
||
batch files . . .
|
||
|
||
A batch file is little more than a list of DOS commands plus
|
||
eight special batch commands. These commands are stored on your
|
||
floppy or hard disk in an ordinary text file such as produced by
|
||
your word processor or text editor. If you can type a letter to
|
||
a friend, you can prepare a batch file!
|
||
|
||
Several time-saving batch file examples which provide real work
|
||
power to your everyday computer problems are presented at the
|
||
end of this tutorial. We will also examine the eight basic batch
|
||
file commands as well as the AUTOEXEC.BAT file which starts your
|
||
computer each morning. In addition we will present some simple
|
||
tricks for managing your printer with batch files.
|
||
|
||
One way to think about a batch file is that it takes the
|
||
place of your keyboard and issues commands one after another
|
||
until it reaches a conclusion. Batch files operate line by line
|
||
and are read directly from the disk which makes them a little
|
||
slow, but nevertheless useful and flexible. You can eliminate
|
||
repetitious keyboard tasks by using batch files. Let's look at a
|
||
short batch file . . .
|
||
|
||
Each line of a batch file contains one instruction or operation
|
||
per line which the computer is to perform. Below is the listing
|
||
of a simple batch file example. Don't worry about understanding
|
||
it yet, simply note that each instruction is a DOS command on a
|
||
separate line. The list in the left column is the actual batch
|
||
file, while the explanation in the right column is NOT part of
|
||
the batch file, only a helpful column of comments.
|
||
|
||
EXAMPLE BATCH FILE EXPLANATION
|
||
| |
|
||
date date displayed
|
||
time time displayed
|
||
ver DOS version displayed
|
||
dir a:/p directory of a: floppy
|
||
displayed with a pause
|
||
|
||
The primary use of batch files is to automate sequences or
|
||
instructions which you use frequently. A batch file always has
|
||
the extension BAT. A batch file might for instance be named
|
||
MENU.BAT, CAR.BAT, INSTALL.BAT or MONEY.BAT.
|
||
|
||
Each line in a batch file is a separate command and is performed
|
||
in sequence as if you had typed in the command from your
|
||
keyboard at the DOS prompt. In addition to the usual DOS
|
||
commands, batch files can also contain additional special
|
||
commands to provide truly sophisticated program structures which
|
||
include decision branching and even repetitions of commands.
|
||
In addition, batch files may have special parameters or inputs
|
||
passed to them at the time you run the batch file from the DOS
|
||
command line or prompt.
|
||
|
||
A batch file is run or started by typing the file name without
|
||
the extension. This of course also applies to files ending with
|
||
file extensions EXE or COM as well as BAT.
|
||
|
||
Example: A>hello (Then pressing enter or return key)
|
||
This starts the file hello.bat hello.com or hello.exe
|
||
|
||
Example: C>whoops (Then pressing enter or return key)
|
||
This starts the file whoops.exe whoops.bat or whoops.com
|
||
|
||
There are several ways to abort or terminate any batch file in
|
||
progress. 1) Issue the break command which uses the two key
|
||
combination CONTROL-BREAK (hold down the control or CTRL key
|
||
then press the break key) or you can 2) Tap CTRL-SCROLL LOCK
|
||
keys or 3) Tap CTRL-C keys.
|
||
|
||
There are many ways to prepare a batch file, all of which use
|
||
simple methods of text editing or word processing: 1) Use the
|
||
DOS COPY CON (copy console) command. 2) Use the older EDLIN line
|
||
editor available within DOS. 3) Use the newer DOS EDIT text
|
||
editor available in DOS version 5.0 4) Use any word processor
|
||
(e.g., Microsoft Word, Wordperfect, PC-Write) whose output has
|
||
been set to ASCII or pure text output - many word processors use
|
||
a "save as" file option to select pure ASCII output. See your
|
||
word processor reference book index under ASCII file saving.
|
||
|
||
Let's prepare a batch file:
|
||
|
||
First make sure you have a formatted disk in your disk drive and
|
||
DOS is displaying a DOS prompt such as A> or C>. We need a disk
|
||
in order to save our batch file.
|
||
|
||
We will be using the command COPY CON (copy data from the
|
||
CONsole) command. We could also use any ASCII (plain english)
|
||
text word processor (e.g., Wordperfect) or even EDLIN on your
|
||
DOS disk. Note that you can use either upper or lower case to
|
||
prepare batch files (capitals or small letters.) Using COPY CON
|
||
is like using a small typewriter to prepare your batch file.
|
||
|
||
Type the following list carefully at the DOS prompt:
|
||
|
||
copy con blink.bat (press enter - cursor skips to new line)
|
||
echo Hello there (press enter)
|
||
ver (press enter)
|
||
date (press enter)
|
||
dir/p (press enter)
|
||
^Z (press F6 OR your can press control key
|
||
AND Z key, then press enter)
|
||
|
||
When done, you'll have prepared a batch file of DOS commands
|
||
named blink.bat. Run the batch file by typing this at the DOS
|
||
prompt:
|
||
blink (then press enter key)
|
||
|
||
WARNING! Be careful when preparing batch files since you will
|
||
automatically overwrite and destroy any PREXISTING batch files
|
||
of the same name! Better to make a backup copy of the existing
|
||
batch file (or rename it temporarily with the REN command) and
|
||
then proceed. A classic beginner mistake is to tinker with the
|
||
crucial AUTOEXEC.BAT file without saving a backup copy first!
|
||
More about AUTOEXEC.BAT later in this tutorial.
|
||
|
||
We could also have named the batch file above hello.bat or
|
||
info.bat rather than blink.bat by changing the first line we
|
||
typed, but for simplicity we'll stick with blink.bat which does
|
||
the following chores: Print "hello there" on the screen, then
|
||
type the DOS version in use then display date and finally
|
||
produce a directory listing with pause after each screenful. At
|
||
this point the batch file ends and returns you to DOS. In the
|
||
first line we use COPY CON as our small word processor to begin
|
||
construction of the batch file named blink.bat. In the last line
|
||
the ^Z means end of batch file preparation - exit back to DOS
|
||
and save the file on disk.
|
||
|
||
Another example batch file for you to try, let's call it F.BAT
|
||
This is a reminder that F.BAT refers to formatting a disk:
|
||
|
||
echo off
|
||
copy con f.bat
|
||
cls
|
||
pause
|
||
format b:
|
||
echo all done
|
||
|
||
Notice that here I have omitted the COPY CON command to start
|
||
file preparation and the F6 to end file preparation. Use the
|
||
COPY CON method described above if you wish or whatever word
|
||
processing software is available to construct the file.
|
||
|
||
This batch file (activated by typing f then enter) will clear
|
||
the screen then prepare to format a blank disk in b: drive.
|
||
NOTE: you MUST have FORMAT.COM, the DOS formatting utility, on
|
||
the same disk as the batch file, f.bat - remember that format is
|
||
an EXTERNAL command and f.bat will try to find FORMAT.COM.
|
||
|
||
After the batch file has formatted the disk it prints "all done"
|
||
on the screen. So instead of LOTS of keystrokes to format a
|
||
disk, you just tap "F" then hit enter and the batch file runs.
|
||
See how we are saving keystrokes - that's one of the purposes of
|
||
a batch file! We will discuss the new ECHO command a little
|
||
later in this tutorial.
|
||
|
||
A reminder: Ctrl-Break or Ctrl-C key combination will halt
|
||
any batch file operation if you wish.
|
||
|
||
The next batch file might be used to backup word processing data
|
||
files from your hard drive onto a floppy disk. Let's make an
|
||
initial assumption that your word processing documents are
|
||
stored on your hard drive in the subdirectory C:\DOC. You could
|
||
name this backup batch file B.BAT and when you need to backup
|
||
simply type B (then press enter) at the DOS prompt. We've
|
||
omitted the copy con command at the top of the file and the ^Z
|
||
at the end of the file since you already know how to start and
|
||
end a batch file from previous examples. Note the new commands
|
||
we are using: REM, ECHO and PAUSE which we will discuss shortly.
|
||
|
||
ECHO OFF
|
||
ECHO This batch file backs up DOCUMENT files to disk B:
|
||
ECHO READY TO BACKUP.
|
||
PAUSE
|
||
COPY C:\DOC\*.* B:
|
||
ECHO All done!
|
||
|
||
The line which does most of the work is COPY C:\DOC\*.* B:
|
||
which translates as "copy all files from C:\DOC subdirectory
|
||
and transfer them to B: drive."
|
||
|
||
One batch file can start or call another, but the original batch
|
||
file cannot usually be returned to - you must continue on within
|
||
the second batch file. For example, you could have one batch
|
||
file start another batch file.
|
||
|
||
If a batch file contains a typing or syntax error in any of its
|
||
commands, the computer will stop execution at that point and
|
||
return you to DOS which remembers which disk contains the batch
|
||
file and the drive it was in. If you remove the original disk,
|
||
DOS will ask you to replace it so it can finish executing the
|
||
batch file. Batch files execute one step at a time from the disk
|
||
and NOT from RAM memory. This disk-based nature of batch files
|
||
make them a little slow, but they get the work done in
|
||
reasonably short order for most people.
|
||
|
||
Several books and power user tricks should also be mentioned
|
||
regarding batch files before we move on . . .
|
||
|
||
A superlative book on batch files you might wish to investigate
|
||
is MOS-DOS Batch File programming by Ronny Richardson, 1988,
|
||
Wincrest Books.
|
||
|
||
You should also investigate the SEBFU (Scanlon Enterprises Batch
|
||
File Utilities) software package which is a series of small
|
||
batch file utilities which offer an improvement over the
|
||
standalone DOS batch file programming language. SEBFU allows the
|
||
user to produce subtle, powerful batch files and includes an
|
||
excellent tutorial about using batch files for productivity. If
|
||
you wish to try SEBFU, the shareware version, contact Scanlon
|
||
Enterprises, 38354 17th ST E #C, Palmdale, CA 93550 Telephone
|
||
(805) 272-4827. Include five dollars for shipping and handling.
|
||
|
||
Special batch file COMPILER utilities exist which speed
|
||
execution of batch files and make them run from RAM memory
|
||
rather than disk. Most computer clubs and BBS system carry these
|
||
batch file compilers. One popular batch compiler is named
|
||
BAT2EXEC and was produced by PC Magazine several years ago.
|
||
Batch files will FLY once they have been compiled and run
|
||
from memory rather than disk. Another batch file speedup trick
|
||
uses a "ramdisk" as follows.
|
||
|
||
Remember the DOS VDISK command in our second DOS tutorial? Many
|
||
DOS experts put commonly used batch files in a virtual or RAM
|
||
disk in memory where a batch file runs quickly. This is one
|
||
trick which can turbocharge batch file operations.
|
||
|
||
----------------------------------------------------------------
|
||
|
||
AUTOEXEC.BAT FILE BASICS - THE WAKEUP CALL TO YOUR COMPUTER
|
||
|
||
----------------------------------------------------------------
|
||
|
||
The AUTOEXEC.BAT file starts your computer exactly the way you
|
||
want. It allows you to customize the machine to your liking as
|
||
the computer comes to life. You can cause the AUTOEXEC.BAT file
|
||
to print a startup menu of choices, load one particular program,
|
||
execute another batch file or other useful tasks. The
|
||
AUTOEXEC.BAT file is the first file DOS runs after loading
|
||
itself and configuring the computer. The AUTOEXEC.BAT file must
|
||
be on the same disk as DOS when the computer starts.
|
||
|
||
The AUTOEXEC.BAT file is a special batch file which MUST be
|
||
placed in the main or root directory of a disk to function
|
||
properly.
|
||
|
||
An AUTOEXEC.BAT file can always be modified, enlarged, edited,
|
||
or deleted later as you wish. Sometimes it is useful to have
|
||
several AUTOEXEC.BAT files. Each on a different startup disk to
|
||
operate different programs! An AUTOEXEC.BAT file, like all batch
|
||
files, can be modified with any word processor, DOS EDIT or
|
||
EDLIN text editor.
|
||
|
||
Before tinkering with your AUTOEXEC.BAT file, make sure you do
|
||
not accidentally over-write or destroy your current AUTOEXEC.BAT
|
||
file. If necessary, rename your current AUTOEXEC.BAT file (using
|
||
the rename or REN command) and make a new file while saving the
|
||
old one "just in case." Never edit files on your original DOS disk,
|
||
work on a copy! This wise advice applies to ANY computer file.
|
||
Save a backup copy; never work on the original.
|
||
|
||
Examine the next batch file:
|
||
|
||
copy con AUTOEXEC.BAT (press enter)
|
||
123 (press enter)
|
||
^Z (press enter)
|
||
|
||
This means (first line) create a file named AUTOEXEC.BAT as
|
||
typed from the keyboard or con (console). Then (second line)
|
||
start program named 123. The (final line) end of batch file
|
||
preparation - stash it on the disk. Since the first and last
|
||
lines prepare the batch file, this program really has only one
|
||
line whose purpose is to start a specific program (123.EXE) each
|
||
time the computer is turned on.
|
||
|
||
When finished you'll see a file named AUTOEXEC.BAT on your
|
||
directory listing screen which contains automatic startup
|
||
instructions. If this file were placed on your main DOS disk it
|
||
would try to start a program such as 123.EXE if such a program
|
||
existed there. And since it is AUTOEXEC.BAT this would be the
|
||
first file run each morning when you turn on your computer.
|
||
|
||
You can also start the AUTOEXEC.BAT by typing autoexec and then
|
||
pressing enter. To take a "peek" at the contents of an
|
||
AUTOEXEC.BAT file (or any bat file) simply use the type command.
|
||
Remember to use Ctrl-S key combination to pause the screen if
|
||
the display flashes by too quickly.
|
||
|
||
Example: C>type AUTOEXEC.BAT (display file contents)
|
||
Example: A>type b:AUTOEXEC.BAT (display file on the B: drive)
|
||
Example: C>type AUTOEXEC.BAT>PRN (display file contents on
|
||
printer)
|
||
|
||
Here is another AUTOEXEC.BAT file, this time from a hard drive
|
||
computer. It provides a higher degree of control and direction
|
||
that a computer user might need for hard drive customization.
|
||
|
||
path \dos;\reflex;\wp;\util;\doc;\nor;\bat
|
||
prompt $P$G
|
||
cpu n
|
||
verify on
|
||
blank
|
||
mode bw80,r
|
||
dispclk
|
||
type menu.txt
|
||
|
||
Let's examine this more complicated AUTOEXEC.BAT file in greater
|
||
detail:
|
||
|
||
The first line after establishes a path command to help DOS
|
||
search every subdirectory on the hard disk -you don't have to
|
||
switch around to different areas of the disk, DOS will search
|
||
for you since it knows the various subdirectory "paths" to take.
|
||
|
||
The second line alters the cursor prompt to always display your
|
||
current location and subdirectory. Instead of seeing C> you view
|
||
a more informative C:\DOCS> for example.
|
||
|
||
The third line is a reference to the speed the computer will
|
||
operate at and is a unique command to a particular brand of
|
||
machine (cpu n means start the central processing unit chip at
|
||
normal speed.) Cpu is really CPU.COM, an external file which
|
||
sets the computer's processing speed. Your DOS disk may or may
|
||
not contain the file CPU.COM. This highlights the ability of the
|
||
AUTOEXEC.BAT file to start or load other programs and is
|
||
very useful!
|
||
|
||
The fourth line turns on the verify function for file copying.
|
||
|
||
The next line instructs the DOS mode function to switch to black
|
||
and white display, 80 columns wide and shift one column to the
|
||
right for alignment. We are setting the hardware the way we
|
||
wish. We could also configure the modem or printer with the mode
|
||
command.
|
||
|
||
Next we ask DOS to tell us the time and date. Run the program
|
||
DISPCLK.COM, an external program stored on disk.
|
||
|
||
The final line instructs DOS to type to the screen a text file
|
||
containing a simple menu for the monitor to display. Menu.txt
|
||
probably gives us choices of programs and thus calls other batch
|
||
files.
|
||
|
||
----------------------------------------------------------------
|
||
|
||
BATCH FILE COMMANDS AND USE
|
||
|
||
----------------------------------------------------------------
|
||
|
||
In addition to the normal DOS commands, batch files have eight
|
||
special subcommands. At the end of this section we will provide
|
||
some interesting batch files which you can use or edit on your
|
||
computer.
|
||
|
||
The special batch commands are:
|
||
|
||
--- REM --- The rem command sends a message to the screen or
|
||
simply documents or notes a part of a batch file's operation.
|
||
You should use REM extensively to document long detailed batch
|
||
files so you can revise things and locate portions of the
|
||
program if you decide to change the batch file later. Remarks
|
||
can be up to 123 characters long. REM does not cause any
|
||
operation, it merely documents what you want to say or do.
|
||
|
||
Example: C>REM this is the location of menu operations
|
||
|
||
In DOS 2.0 the REM command could be replaced with a period or
|
||
dot, but this is not true in DOS 3.0 and above.
|
||
|
||
Example: C>. this is the location of menu operations
|
||
|
||
--- PAUSE --- Stops batch file execution on a temporary basis
|
||
until you press a key. Thus you can pause a batch file and do
|
||
some operation (perhaps changing a floppy disk) and then
|
||
continue when you strike a key. Very useful.
|
||
|
||
Example: B>PAUSE
|
||
Example: B>PAUSE This is an optional message, pardner!
|
||
|
||
In the first example, no message is displayed.
|
||
|
||
--- ECHO --- Turns display listing of commands on/off. It can
|
||
also send a message to the screen. It is frequently turned off
|
||
to remove excessive screen messages. Normally, with ECHO on,
|
||
screen messages are sent to the screen which can be distracting.
|
||
To suppress them use the first example. To restart the messages
|
||
use the second example. To add a message with the ECHO command
|
||
see example three. REM or remark command can also send a message
|
||
to the screen but NOT with ECHO turned off!
|
||
|
||
Example: A>ECHO OFF
|
||
Example: A>ECHO ON
|
||
Example: A>ECHO It's raining cats, dogs and computers
|
||
Example: A>@ECHO (don't display this particular line)
|
||
|
||
--- PARAMETERS AND MARKERS ---- This is NOT a batch file
|
||
command like ECHO or PAUSE.
|
||
|
||
Instead parameters are additional pieces of information or
|
||
"modifiers" which follow DOS commands.
|
||
|
||
Example: C>format b:/s
|
||
|
||
In the above, format is the command while b: and /s are the
|
||
parameters. Parameters modify the basic operation of a DOS
|
||
command but are not required by the command to operate. A batch
|
||
file can also accept parameters such as a word, filename,
|
||
symbol, drive letter or any useful character or group of
|
||
characters!
|
||
|
||
Markers placed inside the batch file listing signify which
|
||
parameter goes where. Markers are made from a percent sign (%)
|
||
and a single digit between 0 and 9 for a total of ten markers
|
||
available (remember, zero is a number too.) Here are the ten
|
||
markers:
|
||
|
||
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
|
||
|
||
Let's use an example. Pretend that DOLITTLE.BAT is on your
|
||
floppy. Within its listing of commands there might be this
|
||
single line:
|
||
|
||
ECHO %0 %1 %2 (ECHO shows messages on the monitor)
|
||
|
||
If at the DOS prompt you typed:
|
||
|
||
B>DOLITTLE fancy pants (then press enter)
|
||
|
||
Your screen would show the following:
|
||
|
||
ECHO DOLITTLE fancy pants.
|
||
|
||
In this case, %0 has taken on the value at the start of the DOS
|
||
command which is the first word "DOLITTLE". Meanwhile %1 has
|
||
become "fancy" and %2 is now pants.
|
||
|
||
Looking at this another way:
|
||
|
||
DOLITTLE fancy pants
|
||
| | |
|
||
ECHO %0 %1 %2
|
||
|
||
Let's try a more useful example. Pretend you had a large file of
|
||
word processing files containing bills you have to pay from time to
|
||
time.
|
||
|
||
You need to look up bills or amounts in the file accounts.txt
|
||
which is in plain ASCII (english) text from your word processor.
|
||
|
||
The DOS FIND utility can search large files for specific words,
|
||
strings or characters. The general format for the FIND command
|
||
is: FIND "text" filename. FIND is located in the file FIND.COM
|
||
on your DOS disk and must be present with the batch file to be
|
||
used.
|
||
|
||
A simple batch file possibly named GET.BAT could do this:
|
||
|
||
ECHO OFF
|
||
ECHO searching for data . . . .
|
||
FIND "%1" %2
|
||
ECHO Finished, boss
|
||
|
||
Start the batch file get.bat with search data like this:
|
||
|
||
C>get grocery accounts.txt (first word starts get.bat, second
|
||
word is the item to search for, third item is the file to
|
||
search.)
|
||
|
||
As a result, you will get a report of the line where the word
|
||
"grocery" is found within the file accounts.txt. This could also
|
||
be used to search a telephone list or list of employee names and
|
||
addresses. A powerful idea for a short batch file!
|
||
|
||
--- GOTO --- Jumps to a labeled set of commands within the
|
||
batch file. The general format for the command is GOTO LABEL
|
||
where LABEL is a line in the batch file which must start with a
|
||
colon (:) followed by a name up to eight characters long.
|
||
|
||
A simple, but useless batch file illustrates the GOTO command by
|
||
looping around in circles doing the same task endlessly.
|
||
|
||
Example listing for batch file:
|
||
|
||
ECHO OFF
|
||
:kitty
|
||
ECHO watch this fill your screen over and over, folks
|
||
GOTO kitty
|
||
|
||
Note! On some versions of DOS it is necessary to include one blank
|
||
line at the end of this file. In the above example, just press
|
||
Enter/Return key one extra time after the line "GOTO kitty"
|
||
and then save the batch file.
|
||
|
||
The above batch file will continue to print the remark line over
|
||
and over since it always returns to the start. Tap Ctrl-Break to
|
||
stop this silliness. The true usefulness of the GOTO command is
|
||
best understood by allowing the GOTO within a batch file to
|
||
transfer control elsewhere within its listing rather than to the
|
||
line immediately next in sequence. You can thus cause varying
|
||
useful results depending on a conditions present. Choices and
|
||
different outcomes are a trademark of savvy batch file use.
|
||
|
||
--- IF --- Allows conditional operation of a command. This is a
|
||
fancy way of saying you can cause a batch file to make decisions
|
||
based on a logical condition or input then do something. The
|
||
usual syntax of the IF command is IF CONDITION COMMAND. Let's
|
||
take this apart and examine the concept.
|
||
|
||
In the situation IF CONDITION COMMAND:
|
||
|
||
COMMAND is any normal DOS or batch file command and CONDITION is
|
||
one of three possible tests that yield true or false.
|
||
|
||
Example: IF %1==w GOTO dog (we'll explain this in a bit)
|
||
Example: IF %3 == 80 MODE BW80 (we'll explain this in a bit)
|
||
|
||
The three possible tests are:
|
||
|
||
1. The ERRORLEVEL condition (i.e., a specific number is found).
|
||
2. The STRING COMPARISON. (i.e., two strings are equivalent or
|
||
not.)
|
||
3. The FILE EXISTENCE condition. (i.e., if a file exists or not.)
|
||
|
||
In true full-featured programming languages many other logical
|
||
tests might be allowed, but for batch files these are the
|
||
only three tests. Let's examine the three more closely. Then
|
||
illustrate with an example.
|
||
|
||
1. ERRORLEVEL is a number which tells DOS whether the last
|
||
program run was successful. If so the errorlevel is zero (0)
|
||
anything else above zero means unsuccessful.
|
||
|
||
2. STRING COMPARISON, the second conditional test, is always
|
||
indicated in a batch file by double equals signs (==). A test is
|
||
designated by the condition IF string1 == string2. This is
|
||
frequently used with parameters or markers such as: IF %3 == 80
|
||
MODE BW80.
|
||
|
||
3. In the final and third conditional test, FILE EXISTENCE, the
|
||
usual format is IF EXIST d:filename.ext. which checks for a
|
||
certain file on a certain drive. You can thus check for a
|
||
certain disk or file before continuing the batch file process.
|
||
Pathnames are not allowed (d:\slip\and\slide).
|
||
|
||
Let's try a batch file example to illustrate the use of STRING
|
||
COMPARISONS to make a choice in how the batch file does its
|
||
work. In a way, this is a menu program. Pretend you have two
|
||
software applications. One is a word processor named WORD.EXE
|
||
whose command to start is WORD and the other is a spreadsheet
|
||
named LOTUS.EXE whose command is LOTUS to start.
|
||
|
||
If we prepared a simple batch file called go.bat whose listing is
|
||
below, we could start one or the other program by using either
|
||
the command:
|
||
|
||
A>go w (to start the word processor)
|
||
|
||
OR THIS:
|
||
|
||
A>go s (to start the spreadsheet).
|
||
|
||
Notice how the "w" or "s" is picked up by the batch file and
|
||
sends the program either one direction or the other in the
|
||
example below. The remarks lines which begin with REM in the
|
||
batch file give you a clue about the operation of the program
|
||
but are not themselves commands. The end result of this batch
|
||
file is a saving of keystrokes for frequently used software (the
|
||
word processor and spreadsheet) and could be expanded to start
|
||
many other software packages.
|
||
|
||
REM This batch file selects one of two choices based on input
|
||
REM The next line turns off screen echo to avoid screen clutter
|
||
ECHO OFF
|
||
REM Begin test for one of two choices
|
||
REM Next two lines use percent signs as markers for "w" or "s" keys
|
||
IF %1==w GOTO dog
|
||
IF %1==s GOTO cat
|
||
REM Next line forces goto end if no match is made for w or s
|
||
GOTO end
|
||
:dog
|
||
REM Next command starts word processor, WORD.EXE
|
||
WORD
|
||
GOTO end
|
||
:cat
|
||
REM Next command starts spreadsheet, LOTUS.EXE
|
||
LOTUS
|
||
GOTO end
|
||
:end
|
||
REM Next line switches to root directory and ends the batch file
|
||
CD\
|
||
ECHO Batch file done, bye bye!
|
||
|
||
--- SHIFT --- Re-assigns the relationship of parameters to
|
||
markers. It changes their values. And it does it in a very odd
|
||
way . . .
|
||
|
||
Remember that there are only ten markers available to a batch
|
||
file to hold the parameter values as we mentioned above. Here
|
||
they are:
|
||
|
||
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
|
||
|
||
However you can raise the limit of 10 parameters in a batch file
|
||
using the single word SHIFT. When this command is encountered in
|
||
a batch file, all the parameter and marker pairings are shifted
|
||
one unit to the left. Whatever was assigned to %0 is lost.
|
||
|
||
A diagram to visualize. Before a SHIFT command is issued the
|
||
parameters and markers might be:
|
||
|
||
%0 %1 %2
|
||
| | |
|
||
dog cat computer
|
||
|
||
After the SHIFT command we would see:
|
||
|
||
%0 %1 %2
|
||
| | |
|
||
cat computer
|
||
|
||
Notice that dog is lost, %1 becomes computer and %2 is left
|
||
vacant unless it takes a new parameter from %3 (if %3 had a
|
||
parameter). The effects of the SHIFT command are wide ranging
|
||
throughout the batch file and provide great flexibility and a
|
||
range of parameters greater than ten values.
|
||
|
||
--- FOR..IN..DO --- Allows iteration (repetition) of actions
|
||
or commands. The command is similar to a FOR...NEXT...STEP loop
|
||
programmers use. This command lets you repeat an action several
|
||
times.
|
||
|
||
The command is rather subtle and could be thought of as a three
|
||
part command. The syntax is:
|
||
|
||
FOR %%Variable IN (Set) DO Command
|
||
|
||
Let's look more closely at the three parts:
|
||
|
||
FOR %%Variable IN (Set) DO Command
|
||
============== ======= ==========
|
||
| | |
|
||
part 1 part 2 part 3
|
||
|
||
Translating into English this means: FOR a certain batch file
|
||
variable withIN a SET of filenames or commands DO a certain
|
||
action.
|
||
|
||
The %%VARIABLE is a one-letter variable which must have a double
|
||
%% prior to the letter to distinguish it from single % markers
|
||
we have seen earlier.
|
||
|
||
The SET portion of the command is always in parenthesis as
|
||
(SET). The SET represents filenames or DOS commands you want the
|
||
%% variable to assume while the command is executing. A space is
|
||
used between entries. Pathnames are never allowed but wildcards
|
||
such as *.* are acceptable. If the SET contains DOS command then
|
||
only the %%VARIABLE is used.
|
||
|
||
The COMMAND is a DOS command or batch subcommand. One or several
|
||
of these commands will contain the %%Variable in it.
|
||
|
||
Let's try an example. Pretend by you want a batch file to
|
||
present the DOS version then clear the screen and finally issue
|
||
the directory. We could do this in three lines by:
|
||
|
||
VER
|
||
CLS
|
||
DIR/P
|
||
|
||
However, with the command FOR..IN..DO we can do this in one
|
||
line:
|
||
|
||
FOR %%T IN (Ver cls Dir/P) DO %%T
|
||
|
||
Notice how each DOS command is separated by a space. ? and * are
|
||
NOT allowed within any command within the SET. Use a colon :
|
||
instead of a space within the set when passing parameters to
|
||
programs. You can issue the FOR..IN..DO batch file subcommand at
|
||
the DOS prompt by dropping one of the percentage signs % on
|
||
the variable. Let's move on to some practical and fairly
|
||
interesting examples . . .
|
||
|
||
----------------------------------------------------------------
|
||
|
||
BATCH FILE PROJECTS FOR YOU TO TRY!
|
||
|
||
----------------------------------------------------------------
|
||
|
||
The following batch files do real work and can teach you some
|
||
fascinating principles.
|
||
|
||
To save typing each example, here's a shortcut: simply load this
|
||
file, BATCH.TUT, from this disk or hard drive into your word
|
||
processor. Next, delete the tutorial and batch files you don't
|
||
need, keeping only the batch file lines you require. Move all
|
||
lines of the batch file to the far left margin then save the
|
||
batch file back to disk in plain ASCII text with a permanent
|
||
batch file name such as CANDY.BAT, GO.BAT or PRINTER.BAT which
|
||
you can easily remember. Feel free to change or add things to
|
||
these batch files with your word processor since that's the
|
||
point - batch files are flexible!
|
||
|
||
Note the liberal use of the remarks or REM lines in some batch
|
||
files to explain how things work. If you like, delete all REM
|
||
lines to save typing time, space and speed program execution!
|
||
|
||
---- Fast freespace batch file ----
|
||
|
||
This is a short but useful batch file. It reports the amount of
|
||
freespace on a disk by using the FIND command in DOS to search
|
||
out the line containing the word "free" in the DOS DIR command.
|
||
|
||
Program name: TELLFREE.BAT
|
||
|
||
ECHO OFF
|
||
CLS
|
||
ECHO CHECKING FOR FREE SPACE ON DISK
|
||
DIR | FIND "free"
|
||
|
||
You could modify the last line to DIR A: | FIND "free" to locate
|
||
the free space on the A: drive. The piping symbol | , discussed
|
||
in a previous DOS tutorial illustrates how one command (DIR) can
|
||
"pipe" its output into the FIND command. You MUST have the DOS
|
||
file FIND.EXE on the same disk so that the DIR command can use
|
||
it. The word "free" is case sensitive and must MOT be typed in
|
||
capital letters since the FIND command is case sensitive.
|
||
|
||
Obviously, to use this small program, at the DOS prompt just
|
||
type TELLFREE then press the return or enter key. You could also
|
||
name this batch file T.BAT if you wanted to only type a
|
||
single letter and save additional keystrokes.
|
||
|
||
---- Fast deletion batch file ----
|
||
|
||
This is a short batch file with some powerful wrinkles for
|
||
speedy file deletions. It could be modified in many ways.
|
||
|
||
Program name: DB.BAT
|
||
|
||
ECHO OFF
|
||
CLS
|
||
ECHO Ready to delete ALL files on B: drive
|
||
ECHO Press control-break keys to abort or
|
||
ECHO any other key to continue
|
||
PAUSE
|
||
REM Following line does the deleting
|
||
ECHO Y | DEL B:*.*
|
||
ECHO DONE!
|
||
|
||
This is an odd batch file using some powerful DOS secrets. Line
|
||
four reminds us we are about to delete all files on the B: drive
|
||
and gives us the chance to abort using the control-break key
|
||
combination which works to abort all batch files. The pause
|
||
command on line six halts operations and waits for our keypress.
|
||
|
||
Line eight shows the real power of DOS in a one line command
|
||
which uses ECHO to pass the keystroke Y (meaning yes) via the
|
||
pipe operation of DOS represented by the vertical bar |. This
|
||
effectively means that the deletion of all files on B: drive
|
||
represented by *.* will take place WITHOUT pausing for the
|
||
traditional Yes/No request. The name of the batch file, DB.BAT
|
||
reminds us that its use is to delete all files on B: drive or
|
||
DB, for short!
|
||
|
||
---- Fast formatting batch file ----
|
||
|
||
This batch file will speed your disk formatting. Its name
|
||
F.BAT means format disks, and it gives you some choices and
|
||
illustrates other batch file tricks.
|
||
|
||
There are three ways to use it: for formatting A: drive, B:
|
||
drive, or both A: and B: drives. Note the minimum number of
|
||
keystrokes required and how the batch file determines your
|
||
choice by using parameters. This batch file also requires a
|
||
small text file called yes.txt which shows how a file can be
|
||
used to redirect input to a DOS command in place of the
|
||
keyboard. It is explained below. Be sure to prepare YES.TXT or
|
||
F.BAT will not work!
|
||
|
||
To start this batch file you MUST chose one of the following.
|
||
The space between letter characters is important.
|
||
|
||
To format only A: drive, at DOS prompt enter F A
|
||
To format only B: drive, at DOS prompt enter F B
|
||
To format both A and B drives, at DOS prompt enter F AB
|
||
|
||
In the above commands, the A, B or AB will be inserted into the
|
||
batch file in the location of the symbol %1 as noted earlier in
|
||
this tutorial.
|
||
|
||
Program name: F.BAT
|
||
|
||
ECHO OFF
|
||
CLS
|
||
ECHO FORMATTING DISKS NOW!
|
||
REM This batch file selects one of three choices based on input
|
||
REM Begin test for one of three choices
|
||
IF %1==A GOTO DOG
|
||
IF %1==B GOTO CAT
|
||
IF %1==AB GOTO MOUSE
|
||
REM Next line forces goto end if no match is made
|
||
GOTO end
|
||
:DOG
|
||
FORMAT A:<yes.txt
|
||
GOTO end
|
||
:CAT
|
||
FORMAT B:<yes.txt
|
||
GOTO end
|
||
:MOUSE
|
||
FORMAT A:<yes.txt
|
||
FORMAT B:<yes.txt
|
||
GOTO end
|
||
:end
|
||
|
||
Lines 18 and 19 provide formatting of B: immediately after
|
||
formatting of A: is finished. A short but very powerful batch
|
||
file.
|
||
|
||
Note, how the batch file cleverly uses redirection with the
|
||
< symbol discussed in our earlier DOS tutorial to send the
|
||
"stored keystrokes" in the file yes.txt to the format command so
|
||
you do NOT need to type Yes/No each time the computer formats a
|
||
disk which is usual when using the format command. Redirection
|
||
is a very powerful DOS operation. You will also need the file
|
||
YES.TXT as discussed below.
|
||
|
||
Program name: YES.TXT
|
||
|
||
This is a very simple file. Start your word processor, DOS Edlin
|
||
or even use the COPY CONsole command earlier. This tiny file
|
||
contain a "y" character and two carriage returns and serves as
|
||
an input file to take the place of the keyboard as explained
|
||
above. It provides the format command with "simulated" keyboard
|
||
response of Y (Yes) so the batch file above can continue.
|
||
|
||
Using Copy Console command (which is one method to prepare
|
||
YES.TXT):
|
||
|
||
COPY CON YES.TXT (press enter)
|
||
y (press enter)
|
||
(press enter, skip to new line)
|
||
(press enter, skip to new line)
|
||
^Z (press F6 to end and write file to disk)
|
||
|
||
---- Make a menu batch file project ----
|
||
|
||
The next project is actually four simple batch files which work
|
||
together to provide a "poor man's" menu program for a hard
|
||
drive. Note the automatic switching between subdirectories
|
||
provided by the files 1.bat, 2.bat and 3.bat. Obviously you
|
||
could expand this to include menu choices for more options. Type
|
||
in each batch file program and save on your hard drive. Place
|
||
all files in the root directory of your hard drive, usually C:\
|
||
When ready to start, simply type M, then press enter key. Notice
|
||
how M.BAT runs one of the other three files, 1.BAT, 2.BAT or
|
||
3.BAT. Notice also how when those batch files are done, they
|
||
automatically run M.BAT to return from where they began and
|
||
again display the menu screen.
|
||
|
||
Program name: M.BAT
|
||
|
||
REM Third line turns off echo so commands are not repeated to
|
||
REM the screen twice, avoids screen clutter
|
||
ECHO OFF
|
||
REM Next line clears the screen
|
||
CLS
|
||
REM Next line suggests option 1 which will run 1.bat
|
||
ECHO PRESS 1 FOR WORD PROCESSOR
|
||
REM Next line suggests option 2 which will run 2.bat
|
||
ECHO PRESS 2 FOR SPREADSHEET
|
||
REM Next line suggests option 3 which will run 3.bat
|
||
ECHO PRESS 3 FOR DATABASE
|
||
ECHO PRESS ENTER KEY AFTER SELECTION IS MADE
|
||
|
||
Program name: 1.BAT
|
||
|
||
ECHO OFF
|
||
REM Fourth line switches to a subdirectory containing your
|
||
REM word processor using the cd or change directory command
|
||
CD\WP
|
||
REM Seventh line starts your word processor, named word.exe
|
||
REM Substitute the startup command for your word processor
|
||
WORD
|
||
REM Eleventh line changes out of word processing subdirectory
|
||
REM and goes back to the root directory when word processor
|
||
REM is finished
|
||
CD\
|
||
REM Final line restarts the menu program m.bat
|
||
M
|
||
|
||
Program name: 2.BAT
|
||
|
||
ECHO OFF
|
||
REM Fourth line switches to a subdirectory containing your
|
||
REM spreadsheet using the cd or change directory command
|
||
CD\SPREAD
|
||
REM Seventh line starts your spreadsheet, named lotus.exe
|
||
REM Substitute the start command for your spreadsheet
|
||
LOTUS
|
||
REM Eleventh line changes out of spreadsheet subdirectory
|
||
REM and goes back to the root directory when spreadsheet
|
||
REM is finished
|
||
CD\
|
||
REM Final line restarts the menu program m.bat
|
||
M
|
||
|
||
Program name: 3.BAT
|
||
|
||
ECHO OFF
|
||
REM Fourth line switches to a subdirectory containing your
|
||
REM database using the cd or change directory command
|
||
CD\DATABASE
|
||
REM Seventh line starts your database, named db.exe
|
||
REM Substitute the start command for your database
|
||
DB
|
||
REM Eleventh line changes out of database subdirectory
|
||
REM and goes back to the root directory when database
|
||
REM IS FINISHED
|
||
CD\
|
||
REM Final line restarts the menu program m.bat
|
||
M
|
||
|
||
---- Printer Control Batch file ----
|
||
|
||
Some of the best kept DOS secrets are fascinating. If you have a
|
||
standard dot matrix printer connected to your computer, you can
|
||
use simple batch files to change the typeface and other features
|
||
your printer provides. The reference booklet which accompanied
|
||
your printer discusses printer control codes. For example, on
|
||
Epson compatible printers you will note in your printer book
|
||
that "emphasized printing" has the DECIMAL control code 27 69.
|
||
Let's write a batch file to take charge of our printer!
|
||
|
||
Program name: E.BAT
|
||
|
||
ECHO OFF
|
||
CLS
|
||
ECHO SETTING PRINTER TO EMPHASIZED MODE
|
||
ECHO (ALT 155)(ALT 69) >PRN
|
||
ECHO DONE
|
||
|
||
The fourth line contains a secret trick. The code we need to
|
||
send is 27 69 according to our printer book. When preparing this
|
||
batch file with EDLIN, COPY CONsole or your word processor, you
|
||
must send the printer control code 27 then 69 to the printer.
|
||
|
||
In line four after typing the word "ECHO" then a blank space,
|
||
hold down the ALT key then press 155 on the FAR RIGHT NUMERIC
|
||
KEYBOARD. When done entering the number, release the ALT key.
|
||
On most computers, the cents symbol will appear which the
|
||
printer will accept as the "escape code 27." DO NOT type the
|
||
left and right parenthesis marks which appear on line four: ( ),
|
||
they are only for clarity.
|
||
|
||
Next press ALT 69 which produces the E symbol. You could also
|
||
just type capital E. Next type >PRN which sends this code
|
||
to your printer. Note that there is NO blank space between (ALT
|
||
155) and (ALT 69).
|
||
|
||
The code 155 is substituted for 27 but the 69 is unchanged. Why
|
||
155 rather than 27 for the escape code? An explanation: Printer
|
||
control codes begin with code 128, thus escape character 27 is
|
||
generated by using 27+128 = 155. An necessary trick for this
|
||
batch file. We could send SEVERAL codes by adding more lines to
|
||
the batch file to set letter quality, pica font, line spacing
|
||
and tabs, then type the letter to the printer (ECHO LETTER.TXT>PRN)
|
||
and finally reset the printer. Your printer book discusses these
|
||
decimal control codes.
|
||
|
||
If we wanted to send a formfeed to the printer (eject paper,)
|
||
the printer reference book suggests control code 12, therefore
|
||
12+128 = 140. So the fourth line in the batch file would read
|
||
ECHO (ALT 140) >PRN. The bell sound (decimnal code 7) is
|
||
generated by 7+128 = 135. The batch file would change to read
|
||
ECHO (ALT 135) >PRN.
|
||
|
||
Some printer features are controlled by SINGLE control codes
|
||
while other features are controlled by MULTIPLE escape sequence
|
||
codes which always begin with 27 followed by additional numbers.
|
||
Escape code 27 is always translated to ALT 155 when DOS and
|
||
batch files transmit the printer control information. Within
|
||
software programs the codes may use a different format: \027E
|
||
for example.
|
||
|
||
Many other printing features can be turned on using short batch
|
||
files. For example, double strike printing uses the decimal code
|
||
27 71. In the batch file you could use ECHO (ALT 155)(ALT 71) >PRN.
|
||
|
||
You can also turn on a COMBINATION of several features in one
|
||
longer batch file to control several features. Just add more
|
||
lines and codes to the batch file!
|
||
|
||
To reset the printer when a printing job is finished: code 27
|
||
64. Search out these printer codes in your printer manual and
|
||
let a batch file do the hard work!
|
||
|
||
One of the best batch file tutorials to date was published in
|
||
two parts in the November and December 1991 editions of PC
|
||
Computing Magazine. Contact your library for back issues or
|
||
contact PC Computing at Back Issues Dept, PC Computing Magazine,
|
||
Ziff Davis, POB 53131, Boulder, CO 80322. Back issues currently
|
||
cost $6.00 each.
|
||
|
||
The bibliography/suggested reading list with this disk provides
|
||
additional reading suggestions to advance your batch file
|
||
knowledge.
|
||
|
||
Tutorial finished. Be sure to order your FOUR BONUS DISKS which
|
||
expand this software package with vital tools, updates and
|
||
additional tutorial material for laptop users! Send $20.00 to
|
||
Seattle Scientific Photography, Department LAP, PO Box 1506,
|
||
Mercer Island, WA 98040. Bonus disks shipped promptly! Some
|
||
portions of this software package use sections from the larger
|
||
PC-Learn tutorial system which you will also receive with your
|
||
order. Modifications, custom program versions, site and LAN
|
||
licenses of this package for business or corporate use are
|
||
possible, contact the author. This software is shareware - an
|
||
honor system which means TRY BEFORE YOU BUY. Press escape key to
|
||
return to menu.
|
||
|
||
|