home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
enterprs
/
c128
/
util
/
cs-batch.sfx
/
batchfiles.txt
next >
Wrap
Text File
|
1990-02-12
|
4KB
|
115 lines
┴DDITIONAL ╚ELP ON ├╙-─╧╙ ┬ATCH ╞ILES
╘HINGS THE DOCS DON'T TELL YA'
2/14/93
╥ANDY ╫INCHESTER
á
╚ERE ARE A FEW POINTERS AND SUGGESTIONS ABOUT CONSTRUCTING ├╙-─╧╙ BATCH
FILES THAT WERE LEARNED THE HARD WAY. ═ANY OF THEM WEREN'T OBVIOUS FROM
READING ├╙-─╧╙ DOCUMENTATION. ╙OME ARE PROBABLY JUST QUIRKY LITTLE THINGS
THAT EVEN ├HRIS ╙MEETS DIDN'T EVEN KNOW ABOUT ANYWAY. ╔'LL BASICALLY JUST
PICK APART SOME COMMANDS FROM A FEW OF THE BATCH FILES IN THIS COLLECTION.
á
╞IRST, HERE'S THE BATCH FILE ├─ (BECAUSE IT'S SHORT) WITH A FEW ADDED
COMENTS:
á
PUSHDIR
á
áá╘HIS SAVES THE LOGGED DRIVE. ╧THER DRIVES CAN THEN BE LOGGED BY THE
ááBATCH FILE, AND THE ORIGINAL LOGGED DRIVE RESTORED WITH POPDIR.
á
IF "%1"=" "GOTO NOARG
á
áá%1 REFERS TO THE FIRST PARAMETER OF THE COMMAND TAIL. ╔F THERE IS NO
ááCOMMAND TAIL, A SPACE IS RETURNED, NOT A NULL STRING.
á
X$="%1"
á
áá├OMMAND TAIL PARAMETERS CAN BE ASSIGNED TO OTHER STRINGS, X$ IN THIS
ááCASE. ┴NY TIME A COMMAND PARAMETER IS COMPARED TO A STRING OR ASSIGNED
ááTO A VARIABLE, IT MUST BE SURROUNDED BY DOUBLE QUOTES.
á
IF MID$(X$,2,1)=":"THEN A=ASC(X$):SYS5888,A:X$=MID$(X$,3,LEN(X$)-2)
á
áá╘HIS LINE IS PURE ┬┴╙╔├ 7.0. ╔T LOOKS AT X$ TO SEE IF THE SECOND
ááCHARACTER IS A COLON. ╔F SO, THE FIRST CHARACTER MUST BE A DRIVE LETTER.
áá╘HE ├╙-─╧╙ ROUTINE AT 5888 TAKES THE ┴╙├╔╔ VALUE OF THE CHARACTER IN THE
ááVARIABLE "A" AND LOGS IT AS THE NEW DRIVE. ╘HE REMAINDER OF THE LINE
ááSTRIPS FIRST TWO CHARACTERS FROM X$.
á
POKE7136,0:IF X$="/"THEN POKE7136,1
IF ERRORLEVEL 1 GOTO ROOT
á
áá╘HIS LITTLE SUBTERFUGE IS NECESSARY BECAUSE ├╙-─╧╙ AND ┬┴╙╔├ COMMANDS
ááDON'T MIX WELL. ╔T CHECKS X$ TO SEE IF IT IS EQUAL TO THE "/" CHARACTER
ááUSED FOR SPECIFYING THE ROOT DIRECTORY. ╒NFORTUNATELY, A LINE LIKE:
áááááááIF X$="/" GOTO ROOT
ááDOESN'T WORK. ╘O GET AROUND THIS, THE ├╙-─╧╙ ERRORLEVEL IS CLEARED BY
ááPOKING IT WITH A 0. ╘HEN IF X$="/" SET ERRORLEVEL TO ONE BY POKING IT
ááWITH 1. (┼RRORLEVEL IS LOCATED AT 7136). ╘HE SECOND LINE CHECKS
ááERRORLEVEL, AND GOES TO THE LABLE ROOT IF X$ WAS EQUAL TO "/".
á
>/%1
GOTO DONE
á
áá╘HIS USES THE ├╙-─╧╙ SHELL'S WEDGE TO OPEN THE SUBDIRECTORY NAMED IN THE
ááCOMMAND TAIL. ┘OU HAVE TO BE ESPECIALLY CAREFUL USING THE WEDGE ">"
ááCHARACTER IN A BATCH FILE BECAUSE UNLESS IT IS THE FIRST CHARACTER ON A
ááLINE, IT CAN BE MISTAKEN FOR THE OUTPUT REDIRECTION ">" CHARACTER.
á
:ROOT
>/
GOTO DONE
á
áá╠ABELS ARE ALWAYS PRECEEDED BY A ":" AND MUST START IN THE FIRST COLUMN
ááOF THE LINE. ╔F A LABEL IS PRECEEDED BY A SPACE OR OTHER CHARACTER, IT
ááWON'T BE FOUND.
á
:NOARG
ECHO ╙YNTAX: %0 [D:] DIRECTORY
á
áá╘HE %0 PARAMETER ECHOS THE NAME OF THE COMMAND ITSSELF, IN THIS CASE, CD.
áá╔F THE NAME OF THE COMMAND IS CHANGED, THAT IS, IF CD IS RENAMED, THE NEW
ááWILL SHOW UP ON THE ╙YNTAX SUMMARY.
á
:DONE
POPDIR
á
áá╨OPDIR RESTORES THE DRIVE THAT WAS LOGGED WHEN THE BATCH FILE WAS RUN.
á
áá╘HE FOLLOWING TIDBIT IS THE ENTIRE STRING SEARCH ROUTINE FROM THE DEX
ááBATCH FILE:
á
IF EXIST DEX.TXT GREP -Y %1 DEX.TXT
IF EXIST DEX.TXT GOTO DONE
SYS5888,90
IF EXIST DEX.TXT GREP -Y %1 DEX.TXT
IF NOT EXIST DEX.TXT GOTO NOTFOUND
GOTO DONE
á
áá╔F THE FILE ─┼╪.╘╪╘ IS PRESENT ON THE LOGGED DRIVE, THEN ╟╥┼╨ IS USED TO
ááTO SEARCH FOR THE STRING THAT WAS GIVEN ON THE COMMAND LINE. ╔F ─┼╪.╘╪╘
ááWASN'T FOUND, THE ROUTINE FALLS THROUGH TO SYS5888,90 TO LOG THE BOOT
ááDRIVE (DRIVE Z), AND TRY AGAIN. ╔F ─┼╪.╘╪╘ STILL ISN'T FOUND, CODE AFTER
ááTHE LABEL "NOTFOUND" LETS THE USER KNOW THAT THE FILE ISN'T THERE.
á
áá╘HE NEXT THREE LINES APPEAR IN THE BATCH FILE ═┴╬:
á
ECHO "ô ═ANUAL FOR "%1" "
?CHR$(27)"T"
CHAR0,0,20,"",0
á
áá┘OU CAN INCLUDE CONTROL CHARACTERS SUCH AS ╚╧═┼, ├╠╥, ╙WITCH TO ╠OWER
áá├ASE, AND ╥VS ╧N, WITH THE ECHO COMMAND IF YOU PRECEED THEM WITH A
ááA DOUBLE QUOTE. ├OMPLEX SCREEN FORMATTING IS POSSIBLE BY PRINTING ┼╙├
ááSEQUENCES FOR WINDOWING, AND POSITIONING THE CURSOR WITH THE ├╚┴╥
ááCOMMAND.
á
LHX -P %1.LZH"
á
áá╘HIS WAS JUST PLAIN QUIRKY! ╘HE ╠╚╪ COMMAND COULDN'T SUCCESSFULLY DO
ááTHE REQUESTED PATTERN MATCHING WHEN INCLUDED IN A BATCH FILE UNLESS IT
ááFOLLOWED BY A DOUBLE QUOTE. ╔ DON'T REMEMBER HOW ╔ FINALLY FIGURED THAT
ááOUT, BUT IT WOULDN'T WORK ANY OTHER WAY.
á
á