Batch & MS-DOS Programming
Batch & MS-DOS Programming
!Programming
Batch Programming
02/22/10
Automate Common Keystrokes AUTOEXEC.BAT Save strokes Single command to do many Reduce Confusion CHECK instead of CHKDSK Use Name you want Reduce Complicated to Simple Safety From Dangerous DOS Commands Parameters can be added Become like Programs
Batch Programming
02/22/10
Example
!WPMONO.BAT !C: !cd\wp51 !CURSOR
/GB !WP /NE /MONO !CURSOR /BG !cd\ !Echo Have a Nice Day
Batch Programming 02/22/10 3
Requirements
! Must
have the .BAT Extension Executed by WPMONO (no ext) ! Must be ASCII EDIT or EDLIN WP save as TEXT <Ctrl><F5> WordStar Non Document ! Should not have the same name as any .COM or .EXE programs ! Must not have the same name as any Internal programs Using name.BAT can override
Batch Programming 02/22/10 4
Problems
!DOS
reads commands from .BAT one at a time MUST be available entire duration !ERRORS on one command will not stop Considers each line Independent CD doss not found del *.* does it any way cd .. move up one del *.* again does it
Batch Programming 02/22/10 5
Errors
!Better
to have ECHO ON so can see the instructions as they occur !Ctrl C or Ctrl Break to Abort !Walk through the instructions at the Command line first to make sure correct !Can be real problem with BAD Parameters
Batch Programming
02/22/10
Batch Commands
!ECHO
display !IF test conditions !IF EXIST test file(s) exist !GOTO branch to label !PAUSE temporary stop !REM comment !SHIFT shift parameters !%0 .... %9 parameters
Batch Programming 02/22/10 7
Replaceable Parms
! Batch
files use %0 thru %9 ! Hold space for the environment to supply values ! DOS stores in Stacks Like trays at Lubys Can have more than 10 DOS holds seperate ! the current %0 .. %9 are reusable ! %0 is always the command or batch file ! USE SHIFT to get access to beyond %9
Batch Programming
02/22/10
Repl Parm
!COPY
A:XXX.TXT B:YYY.TXT !%0 = COPY !%1 = A:XXX.TXT !%2 = B:YYY.TXT !%3 = NUL
Batch Programming
02/22/10
Ex No Parms
! MOVE
MD %2
Batch Programming
02/22/10
10
Repl Cont
echo moveit.bat ! ECHO about to MOVE %1 ! MD %2 ! DIR %1 ! COPY %1\*.* %2 ! DIR %2 ! ECHO If you do not want to del %1 ! ECHO Press<Ctrl> <break> NOW any ! ECHO key press will del %1 ! PAUSE ! DEL %1\*.*
!
Batch Programming 02/22/10 11
Example !ECHO
****** XA.BAT with %1 !REM %1 IS THE DATE THAT !REM I NEED TO COPY FROM !XCOPY C:\ A:\ /S/P/D:%1 !ECHO HAVE A NICE DAY
Batch Programming
02/22/10
12
ECHO
!Displays
messages, or turns command-echoing on or off. !ECHO [ON | OFF] !ECHO [message] !Type ECHO without parameters to display the current echo setting. !@ECHO OFF turns off and does not display ECHO OFF
Batch Programming 02/22/10 13
ECHO USES
!Display
messages ERROR and other give users hints on what to do !Uses Replaceable parameters
Batch Programming
02/22/10
14
%1 is an Invalid Entry
02/22/10 15
IF
!Performs
conditional processing in batch programs. !IF [NOT] ERRORLEVEL number command !IF [NOT] string1==string2 command !IF [NOT] EXIST filename command
NOT Specifies that MS-DOS should carry out the command only if the condition is false.
Batch Programming
02/22/10
16
IF Cont
! ERRORLEVEL
number Specifies a true condition if the last program run returned an exit code equal to or greater than the number specified. ! command Specifies the command to carry out if the condition is met. ! string1==string2 Specifies a true condition if the specified text strings match. ! EXIST filename Specifies a true condition if the specified filename exists. ! Note the == for Equality test = is assignment
Batch Programming 02/22/10 17
IF Examples
!IF !IF
GOTO
!Directs
MS-DOS to a labelled line in a batch program. !GOTO label !label Specifies a text string used in the batch program as a label. !You type a label on a line by itself, beginning with a colon. ! :END :NOPARMS :allok
Batch Programming 02/22/10 19
SHIFT
!Changes
the position of replaceable parameters in a batch file. !Cause values in each % to shift to the left
%0 falls into the bit bucket %1 has value that %2 had 3.%2 has value that %3 had !Will
Batch Programming
PAUSE/REM
!
Suspends processing of a batch program and displays the message "Press any key to continue...." PAUSE "Time to Get Working Now" PAUSE "Time to Get Working Now" Press any key to continue ECHO OFF only Press ... continue shows rem Records comments (remarks) in a batch file or CONFIG.SYS. REM [comment] note only shows if ECHO ON
Batch Programming
02/22/10
21
CALL
!CALL
[drive][path]filename [batch parameters] !Must use when one batch file executes another or the second will not return back to caller when finishes its own actions !Same as the COMMAND/C
Creates another environment and EXIT when finishes
Batch Programming 02/22/10 22
FOR
! Repeated
command within specified conditions ! FOR %%variable IN (set) DO dos_command %% replaceable parameters ! FOR %variable IN ...... at the command line
FOR %h IN (*.TXT) DO COPY %h PRN all TXT files (in current sub) will be copied to the printer one at a time
Batch Programming
02/22/10
23
FOR Ex.
!Example
UNPKPRT !ECHO OFF !ECHO xxxxxxxxxxxxx > PRN !ECHO Here is %1 > PRN !ECHO xxxxxxxxxxxxx > PRN !PAK V %1 > PRN
Batch Programming 02/22/10 24
PRINTIT !ECHO
xxxxxxxxxxxx > PRN !ECHO Here is %1 > PRN !ECHO xxxxxxxxxxxx > PRN !COPY %1 PRN !TOF
Batch Programming
02/22/10
26
Ex. Exist
! ECHO
OFF ! REM IF2.BAT ! IF EXIST *.OBJ ECHO *.OBJ files being erased ! IF EXIST *.OBJ DEL *.OBJ ! IF EXIST *.BAK ECHO *.BAK files being erased ! IF EXIST *.BAK DEL *.BAK ! ECHO finished erasing
Batch Programming
02/22/10
27
Ex. Find
! REM
FILEFIND.BAT ! IF %1==. GOTO ERROR ! CHKDSK /V | FIND "%1" ! GOTO END ! :ERROR ! ECHO MUST ENTER FILE NAME TO MATCH ! GOTO END ! :END
Batch Programming
02/22/10
28
Menu !Create
Text File with comments !Allow for Single Letter .BAT files !Not Best as single Letter BAT files are limited
37 max Not Descriptive Clutter Root
Batch Programming
02/22/10
29