'=========================================================================== ' Subject: BATCH PROCEDURES Date: 07-04-96 (19:54) ' Author: Edward Blake Code: QB, PDS ' Origin: eblake2@quebectel.com Packet: DOS.ABC '=========================================================================== ' 1996 Edward Blake (still 14 years old) Quebec, Canada ' Routines called from a Batch (.BAT) file. can be used for making a simple ' Installation batch program or anything else. ' uses the StrTok routine from the quickbasic example program Token.bas ' for tokenizing the command$ ' Can't be used with QBasic because QBasic doesnt support Command$ ' ' $INCLUDE: 'QB.BI' DECLARE SUB READER (FILE$) DECLARE SUB BCKGND () DECLARE SUB WIN (X1!, Y1!, X2!, Y2!, A$) DECLARE FUNCTION StrTok$ (Source$, Delimiters$) DECLARE SUB EXITWITHERRLEVEL ALIAS "_EXIT" (N AS INTEGER) DIM TOK$(10) IF COMMAND$ <> "" THEN P$ = COMMAND$ DELM$ = " ,;:()?" + CHR$(9) + CHR$(34) TOKN$ = StrTok$(P$, DELM$) WHILE TOKN$ <> "" TOK$(I) = TOKN$ I = I + 1 TOKN$ = StrTok$("", DELM$) WEND FOR I = 0 TO 10 TOK$(0) = UCASE$(LTRIM$(RTRIM$(TOK$(0)))) NEXT I SELECT CASE TOK$(0) CASE "BCKGND" BCKGND CASE "COLOR" COLOR VAL(TOK$(1)), VAL(TOK$(2)) LOCATE 1, 1: PRINT CASE "WIN" WIN VAL(TOK$(1)), VAL(TOK$(2)), VAL(TOK$(3)), VAL(TOK$(4)), TOK$(5) CASE "PROGRESS" LOCATE VAL(TOK$(1)), VAL(TOK$(2)): PRINT STRING$(VAL(TOK$(3)) / 10, 219) CASE "LOCATE" LOCATE VAL(TOK$(1)), VAL(TOK$(2)) CASE "SELECTDRIVE" WIN 20, 5, 40, 11, "Select Drive" DO I$ = INKEY$ IF I$ = CHR$(0) + CHR$(80) THEN Y% = Y% + 1 IF I$ = CHR$(0) + CHR$(72) THEN Y% = Y% - 1 IF I$ = CHR$(13) THEN EXIT DO IF Y% = 0 THEN COLOR 15, 1 ELSE COLOR 7, 0 LOCATE 6, 21: PRINT " A: " IF Y% = 1 THEN COLOR 15, 1 ELSE COLOR 7, 0 LOCATE 7, 21: PRINT " B: " IF Y% = 2 THEN COLOR 15, 1 ELSE COLOR 7, 0 LOCATE 8, 21: PRINT " C: " IF Y% = 3 THEN COLOR 15, 1 ELSE COLOR 7, 0 LOCATE 9, 21: PRINT " D: " IF Y% = 4 THEN COLOR 15, 1 ELSE COLOR 7, 0 LOCATE 10, 21: PRINT " E: " LOOP EXITWITHERRLEVEL Y% CASE "READER" READER TOK$(1) END SELECT ELSE PRINT "±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; PRINT "±±ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸±±"; PRINT "±±³ Batch Procedures - 1996 Edward Blake ³±±"; PRINT "±±ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ[Commands]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±"; PRINT "±±³Win x1 y1 x2 y2 title (note: no parameters are optional except title) ³±±"; PRINT "±±³bckgnd (note: all parameters are ignored) ³±±"; PRINT "±±³color num1 [num2] (note: default is 0 for all parameters!!) ³±±"; PRINT "±±³Progress x1 y1 value ³±±"; PRINT "±±³selectdrive (note: will return a errorlevel 0=A 1=B 2=C 3=D 4=E,only A-E) ³±±"; PRINT "±±³locate x1 y1 (use echo for displaying text) ³±±"; PRINT "±±³Reader filename (must have the extension) ³±±"; PRINT "±±ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ;±±"; PRINT "±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; END IF SUB BCKGND FOR I = 1 TO 24 LOCATE I, 1: PRINT STRING$(80, 177); NEXT I LOCATE 25, 1: PRINT STRING$(80, 177); END SUB SUB READER (FILE$) DIM FILEC$(500) OPEN FILE$ FOR INPUT AS #1 DO UNTIL EOF(1) INPUT #1, FILEC$(I) I = I + 1 LOOP CLOSE #1 COLOR 7, 1 Y = -1 DO I$ = INKEY$ IF I$ = CHR$(0) + CHR$(80) THEN Y = Y + 1 IF I$ = CHR$(0) + CHR$(72) THEN Y = Y - 1 IF I$ = CHR$(27) THEN EXIT DO IF Y < -1 THEN Y = -1 IF Y > 474 THEN Y = 474 FOR I = 1 TO 25 LOCATE I, 1, 0: PRINT FILEC$(I + Y) + STRING$(80 - (LEN(FILEC$(I + Y))), 32); NEXT I LOOP COLOR 7, 0 CLS END SUB FUNCTION StrTok$ (Srce$, Delim$) STATIC Start%, SaveStr$ ' If first call, make a copy of the string. IF Srce$ <> "" THEN Start% = 1: SaveStr$ = Srce$ END IF BegPos% = Start%: Ln% = LEN(SaveStr$) ' Look for start of a token (character that isn't delimiter). WHILE BegPos% <= Ln% AND INSTR(Delim$, MID$(SaveStr$, BegPos%, 1)) <> 0 BegPos% = BegPos% + 1 WEND ' Test for token start found. IF BegPos% > Ln% THEN StrTok$ = "": EXIT FUNCTION END IF ' Find the end of the token. EndPos% = BegPos% WHILE EndPos% <= Ln% AND INSTR(Delim$, MID$(SaveStr$, EndPos%, 1)) = 0 EndPos% = EndPos% + 1 WEND StrTok$ = MID$(SaveStr$, BegPos%, EndPos% - BegPos%) ' Set starting point for search for next token. Start% = EndPos% END FUNCTION SUB WIN (X1, Y1, X2, Y2, A$) FOR I = Y1 TO Y2 LOCATE I, X1: PRINT STRING$(X2 - X1, 32); NEXT I LOCATE Y1, X1 + 1: PRINT STRING$(X2 - X1 - 1, 196); LOCATE Y2, X1 + 1: PRINT STRING$(X2 - X1 - 1, 196); FOR I = Y1 + 1 TO Y2 - 1 LOCATE I, X1: PRINT CHR$(179); LOCATE I, X2: PRINT CHR$(179); NEXT I LOCATE Y1, X1: PRINT CHR$(218); LOCATE Y1, X2: PRINT CHR$(191); LOCATE Y2, X1: PRINT CHR$(192); LOCATE Y2, X2: PRINT CHR$(217); IF A$ <> "" THEN LOCATE Y1, ((X2 + X1) / 2) - ((LEN(A$) + 2) / 2): PRINT " " + A$ + " " END IF END SUB