'===========================================================================
' Subject: SELECTED BATCH MAKER               Date: 12-03-98 (18:05)       
'  Author: Fred Buffington                    Code: QB, QBasic, PDS        
'  Origin: oasys@nstar.net                  Packet: DOS.ABC
'===========================================================================
DECLARE FUNCTION min% (aa%, bb%)
REM -- execbat
REM -- to create a selected.exec type batch file in dos
1        COLOR 15, 1
        CLS
        PRINT "EXECBAT -- File Processing Batch interface"

        appnd% = 0
REM -- GET FILE NAME(S)      
       LOCATE 4, 1
'      LINE INPUT "Enter directory parameter (wildcards ok, H=HELP) ", parm1$
           msg$ = "Enter directory parameter (wildcards ok, H=HELP) "
           PRINT msg$;
           DO
                WHILE zz$ = "": zz$ = INKEY$: WEND
                IF zz$ = CHR$(13) THEN EXIT DO
                IF UCASE$(zz$) = "H" AND parm1$ = "" THEN
                   GOSUB help
                   CLS
                   GOTO 1
                END IF
                IF zz$ > CHR$(28) THEN parm1$ = parm1$ + zz$: PRINT zz$;
                IF zz$ = CHR$(8) THEN
                   IF LEN(parm1$) <= 1 THEN
                        parm1$ = "": LOCATE 4, 1 + LEN(msg$)
                   ELSE
                        parm1$ = LEFT$(parm1$, LEN(parm1$) - 1)
                        LOCATE 4, 1 + LEN(msg$): PRINT SPACE$(20)
                        LOCATE 4, 1: PRINT msg$; parm1$;
                   END IF
                   zz$ = ""
                END IF
                IF zz$ = CHR$(27) THEN CLOSE : SYSTEM: 'CHAIN "PRMENU"
                zz$ = ""
           LOOP
      
           ll% = INSTR(UCASE$(parm1$), "ECHO OFF")
           IF ll% > 0 THEN parm1$ = MID$(parm1$, 1, ll% - 1): no.echo% = -1
REM -- CHECK FOR KEYWORD APPEND    
        IF RTRIM$(parm1$) = "" THEN CLOSE : SYSTEM
        IF INSTR(UCASE$(parm1$), " |MORE") > 0 THEN
            ll% = INSTR(UCASE$(parm1$), " |MORE")
            and.more% = -1
            parm1$ = MID$(parm1$, 1, ll% - 1) + MID$(parm1$, ll% + 6)
        END IF
       
        IF INSTR(UCASE$(parm1$), " APPEND") > 0 THEN appnd% = INSTR(UCASE$(parm1$), " APPEND")
        IF INSTR(UCASE$(parm1$), " PAUSE") > 0 THEN paus% = INSTR(UCASE$(parm1$), " PAUSE")
        M% = INSTR(UCASE$(parm1$), " ")
       ' IF appnd% AND paus% = 0 THEN paus% = appnd%
       ' IF paus% AND appnd% = 0 THEN appnd% = paus%
''        IF l% > 0 THEN parm1$ = LEFT$(parm1$, l% - 1): APPND% = -1
        IF M% > 0 AND (appnd% OR paus%) THEN parm1$ = LEFT$(parm1$, min(appnd%, paus%))
REM -- START      
        PRINT : PRINT "Creating  Selected.Bat"
        OUT.FILE$ = "selected.fil": redirect$ = ">"
REM -- NOT NEEDED IF APPND% THEN redirect$ = ">": OUT.FILE$ = "Selected.app" ELSE redirect$ = ">": OUT.FILE$ = "selected.fil"
        SHELL "Dir /b " + parm1$ + " " + redirect$ + " " + OUT.FILE$
REM -- WRITE TO SELECTED.BAT      
        OPEN OUT.FILE$ FOR INPUT AS #1
        IF appnd% THEN OPEN "selected.bat" FOR APPEND AS #2 ELSE OPEN "selected.bat" FOR OUTPUT AS #2
        IF no.echo% = 0 THEN
            IF appnd% = 0 THEN PRINT #2, "@echo off"
        END IF
        WHILE NOT EOF(1)
                LINE INPUT #1, ll$
                IF no.echo% = 0 THEN
                    IF INSTR(ll$, ".BAS") = 0 THEN PRINT #2, "ECHO " + ll$: IF paus% THEN PRINT #2, "pause "
                END IF
                xx$ = "CALL %1 " + ll$ + " %2 %3 %4 %5 %6 %7 %8"
                'IF and.more% THEN xx$ = xx$ + " |more"
                PRINT #2, xx$
                IF paus% THEN PRINT #2, "pause"
        WEND
REM -- CLOSE FILES, ERASE OUT.FILE$ (SELECTED.FIL)      
        CLOSE
        and.more% = 0
        KILL OUT.FILE$
        PRINT "Selected.bat is now ready for execution"
        PRINT "Do you want to edit the file ? "; : INPUT "", xx$
        IF UCASE$(xx$) = "Y" THEN SHELL "Edit Selected.Bat"
        SYSTEM

help:
        CLS
       
        PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"
        PRINT "³EXECBAT - Selected Batch Maker                                       ³"
        PRINT "³Makes a batch file called Selected.Bat to be used for processing     ³"
        PRINT "³files specified here using the DIR /b command (switches OK).         ³"
        PRINT "³                                                                     ³"
        PRINT "³Syntax:                                                              ³"
        PRINT "³filename.ext [PAUSE] [APPEND]                                        ³"
        PRINT "³                                                                     ³"
        PRINT "³filename = file name to be included in batch file for processing     ³"
        PRINT "³          (wildcard ok)                                              ³"
        PRINT "³.ext     = file extension (wildcard ok)                              ³"
        PRINT "³PAUSE    = insert the batch command pause after each line            ³"
        PRINT "³APPEND   = append the files here to Selected.Bat already existing    ³"
        PRINT "³Example: Want to list all text files on the screen                   ³"
        PRINT "³ syntax: *.txt PAUSE                                                 ³"
        PRINT "³ then from the prompt > you would enter: >selected type              ³"
        PRINT "³ suggestion: if you are going to use selected type, make a bat file  ³"
        PRINT "³             called list.bat that does type %1 |more then use        ³"
        PRINT "³             selected list instead of selected type. (the |more does ³"
        PRINT "³             not work as a parameter for this command).              ³"
        PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"
       
        zz$ = "": WHILE zz$ = "": zz$ = INKEY$: WEND: zz$ = "": parm1$ = ""

        RETURN

DEFINT A-Z
FUNCTION min (aa, bb)
        IF aa < bb THEN zz = bb
        IF bb < aa THEN zz = aa
        IF zz = 0 AND aa <> 0 THEN zz = aa
        IF zz = 0 AND bb <> 0 THEN zz = bb
        min = zz
END FUNCTION
