Skip to content

Latest commit

 

History

History
381 lines (249 loc) · 14.8 KB

dos2_batchfiles.md

File metadata and controls

381 lines (249 loc) · 14.8 KB
                     D O S 2   B A T C H F I L E S 
                                                    
      
      Op  Sunrise  Special  #2  heeft  al eens  een tekst  over de 
      mogelijkheden  van MSX-DOS  2.31 gestaan. Ook stond op SRS#2 
      een tekst  over pipelining en redirectioning. Ik zal in deze 
      tekst   echter  wat   praktijkvoorbeelden  ervan  geven:  de 
      batchfiles die op mijn HD staan.
      
      Eigenlijk is dit alleen interessant voor HD-gebruikers, want 
      batchfiles  nemen toch minstens 1 kB in van een diskette, en 
      het  kost  weer  extra  laadtijd. Op  een harddisk  maakt de 
      diskruimte niet bar veel uit, en de laadtijd is vrij kort.
      
      
                        D R I E   S O O R T E N 
      
      Je kunt  batchfiles opdelen in drie soorten. De eerste zorgt 
      ervoor  dat een  aantal commando's gecombineerd worden zodat 
      er minder  hoeft te worden getikt. De tweede soort zorgt ook 
      voor  minder typewerk, maar heeft als doel het opstarten van 
      een programma,  en eventueel nog iets doen na het be�indigen 
      ervan. En de derde soort is gewoon diversen.
      
      Dit  opdelen in  soorten is  eigenlijk flauwekul,  omdat het 
      natuurlijk op  heel veel  manier kan, maar ik heb het gedaan 
      om  toch  een  beetje  een  overzichtelijke tekst  te kunnen 
      typen.
      
      
                             F O R M A A T 
      
      Ik houd  zelf het volgende aan: namen van files, directory's 
      of  drives met  hoofdletters en  interne DOS  commando's met 
      kleine letters.  Maar in deze tekst type ik alles gewoon met 
      hoofdletters, dit voor de duidelijkheid.
      
      
                        E E R S T E   S O O R T 
      
      Ik zal  gewoon een  aantal batchfiles  bespreken. Deze staan 
      ook op deze disk onder dezelfde naam.
      
      
              D M O V E . B A T 
      
              COPY %1 %2
              ECHO Y|DEL %1>NUL
      
      MOVE kan  normaal alleen  files op ��n disk verplaatsen, dus 
      van de ene dir naar de andere directory. MOVE verplaatst dan 
      ook  alleen  de  directory-entry. Ik  verplaats echter  vaak 
      files  van de  ene drive  naar de andere. Dat kost normaal 2 
      regels typewerk.  Met DMOVE  wordt dit  gereduceerd tot  ��n 
      regel.
      
      %1  is de eerste parameter die achter de batchfile staat. %2 
      de tweede,  enz. %0  is trouwens  de ECHTE eerste parameter. 
      Hier zal ik later ook nog iets mee doen.
      
      COPY  %1  %2  zorgt dus  gewoon dat  er een  file gekopieerd 
      wordt. ECHO Y|DEL %1>NUL betekent dit:
      
      ECHO Y|  stuur het teken y naar de input van het commando 
               dat erachter staat (pipelining).
      
      DEL %1   als  de vraag  "Erase all files (Y/N)? " komt, zal 
               hier automatisch een Y worden gegeven.
      
      >NUL     stuur de output van de voorgaande commando's naar 
               het NUL device. Dit houdt in dat er niks op het 
               schemr komt.
      
      
               M O V D I R 
      
               MD %2
               MOVE %1 %2
               RD %1
      
      Deze  batchfile  gebruik  ik om  snel een  directory in  een 
      andere  directory te  plaatsen. Als je bijvoorbeeld eerst de 
      subdirectory TSRS  in de rootdir hebt staan, en je wilt deze 
      verplaatsen naar de subdir MEMMAN, doe je het volgende:
      
               MOVDIR \TSRS \MEMMAN\TSRS
      
      Nu  wordt eerst  de directory TSRS aangemaakt in MEMMAN, dan 
      worden alle  files gemoved  van \TSRS  naar \MEMMAN\TSRS  en 
      tenslotte wordt de directory \TSRS verwijderd.
      
      Eventueel  zou  dit ook  nog uitgebreid  kunnen worden  naar 
      DMOVDIR, die ik zelf echter niet op mijn HD heb staan, omdat 
      bij MOVE  de FAT  niet veranderd  wordt, en bij COPY wel. En 
      een  directory blijft  meestal toch op dezelfde drive staan. 
      Maar voor de volledigheid...
      
      
               D M O V D I R 
      
               MD %2
               COPY %1 %2
               ECHO Y|DEL %1>NUL
               RD %1
      
      
                            D I V E R S E N 
      
      Eigenlijk  zou nu  natuurlijk de  tweede soort moeten komen. 
      Maar omdat  die files gebruiken die moeten worden aangewezen 
      met het environment item PATH en er zijn nog een paar andere 
      environment items nodig.
      
      
               A U T O E X E C . B A T 
      
               BUFFERS 18
      
      Zorgt  ervoor  dat  het aantal  buffers wordt  vergroot. Dit 
      staat  standaard  op  5.  In  de buffers  worden de  FAT- en 
      directorysectoren  bewaard, wat  de laadtijd  zeer ten goede 
      komt.
      
               IF NOT %TIME%A==24A A:\UTILS\ST4TUNE
      
      ST4TUNE.COM is een programma dat Star Trek quotes laat zien. 
      Er wordt  telkens willekeurig ��n gekozen. Soms is het nodig 
      om  AUTOEXEC.BAT  nog  eens  op  te  starten,  bijv. als  de 
      environments  items  verneukt  zijn. Als  TIME dan  nog goed 
      staat,  wordt  ST4TUNE  niet gerund,  omdat het  toch ietwat 
      traag (CP/M) is.
      
               PATH H:\UTILS; A:\; A:\BATCH; A:\UTILS
               PATH +A:\UTILS\TEXT; A:\UTILS\CRUNCH; A:\UTILS\ML
               PATH +A:\UTILS\TURBOR; A:\UTILS\DOS2TOOLS; A:\BASIC
      
      Een aantal  directory's in PATH zetten. BATCH moet uiteraard 
      VOOR  UTILS staan, omdat sommige batchfiles gelijknamige COM 
      files  gebruiken.  Bijv. PMARC.BAT;  zie verderop.  Ook moet 
      eerst op de RAMdisk worden gezocht.
      
               ASSIGN F: G:
      
      Bij  mij is  E: de eerste echte diskdrive. Omdat ik maar ��n 
      diskdrive heb,  is F:  een virtuele  drive. Dat betekent dat 
      ik,  als ik  naar F:  vraag, de  mededeling "Insert  disk in 
      drive F:  and strike  a key  when ready" krijgt. Dat vind ik 
      niet  leuk, en  daarom laat  ik F:  naar G: wijzen. Omdat G: 
      niet  bestaat,  bestaat  F:  nu  ook  niet meer  voor lagere 
      systeemfuncties.
      
      Bij Disk I/O error wijst de computer overigens wel weer naar 
      de echte  drive. Als  je bijv.  ASSIGN C: A: hebt gedaan, je 
      gaat  naar C:  en er  is een  Disk I/O  error krijg  je toch 
      "drive A:" op het scherm.
      
      Met ASSIGN  zonder een  drive (of letter) erachter wordt het 
      trouwens weer default gezet.
      
               SET TIME 24
      
      Ik ben  mijn horloge  gewend, en  heb liever  niet am  en pm 
      meldingen.
      
               SET DATE DD-MM-YY
      
      De Nederlandse manier van data.
      
               SET SHELL H:\UTILS
      
      COMMAND2.COM staat zo direct in H:\UTILS.
      
               SET PROMPT ON
      
      Prompt aan. Dus niet "A>", maar "A:\>".
      
               SET PATTERN C:\DIVERSEN\CHARSET
      
      Tja,  PATTERN.COM   is  een   programma  dat   nog  niet  is 
      vrijgegeven.  Ik denk  wel dat  het op  de volgende  Special 
      staat.
      
               SET EXPERT ON
      
      Expert  mode  aan.  COM  files  die  van  DOS1  disks worden 
      opgestart werken gewoon.
      
               SET TEMP H:\
      
      Tijdelijke bestanden (o.a. bij pipelining gebruikt) in H:\.
      
               SET HELP C:\TEKST\HELP
               SET KHELP %HELP%
      
      Japanse HELP (Kanji HELP) files hoef ik niet... Die zijn dus 
      hetzelfde als de Engels HELP files.
      
               IF NOT A%MEMMAN%==AON SET MEMMAN OFF
      
      Het environment  MEMMAN wordt  op OFF gezet als het niet aan 
      stond. MEMMAN wordt ON gezet door MEMMAN.BAT.
      
               RAMDISK 384
      
               MD H:\UTILS
               COPY A:\COMMAND2.COM H:\UTILS
               COPY A:\UTILS\DOS2TOOLS\KEY.COM H:\UTILS
      
      RAMdisk  aanmaken, en  2 files  erop zetten.  Ik wilde eerst 
      functietoetsen gebruiken  onder DOS.  Moet ik  weer in  orde 
      maken.
      
               ECHO N|PATTERN STANDARD>NUL
      
      Ik laad  de standaard  karakterset in,  omdat ik  anders gek 
      word van het yen-teken.
      
               KEY ON
      
      Functietoetsen aan en dan zit ik in DOS.
      
      
               R E B O O T . B A T 
      
               MODE 80
               TURBOSW 2
               COLOR 15,0,0
      
      Scherm weer goed zetten, R800-DRAM aan.
      
               SET R1=%REBOOT%
               SET REBOOT=
      
      Via het  env. item REBOOT kan een commando worden meegegeven 
      dat  wordt uitgevoerd  als je  terug naar  DOS gaat.  REBOOT 
      wordt  in  een  ander  item gekopieerd  omdat je  anders het 
      effect  zou  kunnen  krijgen  dat er  de volgende  keer weer 
      hetzelfde wordt gedaan als je terug naar DOS gaat.
      
               %R1%
      
               SET R1=
      
      Het  env. item R1 wordt gewist als er nog wordt teruggekeerd 
      naar de batchfile of als R1 een intern DOS commando was.
      
      
                        T W E E D E   S O O R T 
      
      Nu  worden  batchfiles  besproken  die  een  ander programma 
      inladen. Om te beginnen een hele simpele.
      
      
               P M A R C . B A T 
      
               SET UPPER ON
               PMARC.COM %1 %2 %3 %4 %5 %6 %7 %8 %9
               SET UPPER OFF
      
      Het  item  UPPER  is  ervoor om  te zorgen  dat alle  kleine 
      letters die  in parameters  voorkomen in hoofdletters worden 
      omgezet.  Dit is  voor sommige  CP/M programma's, die anders 
      niet goed functioneren. Hiertoe behoren PMARC en PMEXT. 
      
      Omdat het  voor sommige  programma's ook  mooi is  om kleine 
      letters   te  kunnen  gebruiken  (waaronder  INPUT.COM,  zie 
      Sunrise Magazine #6), wordt UPPER ook weer op OFF gezet.
      
      
               M E M M A N . B A T 
      
               IF %MEMMAN%==ON ECHO
               IF %MEMMAN%==ON ECHO *** MemMan already installed
               IF %MEMMAN%==ON EXIT
      
      Als MemMan  al eens  is ingeladen,  wordt teruggekeerd  naar 
      MSX-DOS. Dit gebeurt met EXIT. Als je COMMAND2 intypt zonder 
      iets  extra, kost  dat geheugen,  en bij EXIT wordt dit weer 
      vrijgegeven. Probeer  voor de lol trouwens een COMMAND2>PRN. 
      Zorg wel dat de printer aan staat! Als je dan ECHO Tekst>CON 
      intypt,  krijg je  w�l weer  iets op het scherm. Achter EXIT 
      kan ook nog een foutcode worden opgegeven.
      
               CLS
      
               PATH +A:\MEMMAN
               SET MEMMAN=ON
               SET REBOOT=%1
               SET TL=A:\MEMMAN\TSRS
      
      Het path  wordt uitgebreid  met A:\MEMMAN.  De TSR directory 
      wordt  goed gezet  en de  parameter die is meegegeven achter 
      MEMMAN.BAT wordt in REBOOT gezet.
      
               MEMMAN.COM
      
      
               A F T E R M M . B A T 
      
      Mijn   MEMMAN.COM   zet   '_SYSTEM("AFTERMM.BAT")'   in   de 
      keyboardbuffer. AFTERMM betekent "after MemMan".
      
               CLS
               ECHO Loading CHGCPU2.TSR and MBTSR.TSR...
      
               TL CHGCPU2>NUL
               TL MBTSR>NUL
      
      Laad een paar TSR's in.
      
               REBOOT
      
      REBOOT opstarten.  Het commando  dat eerst achter MEMMAN.BAT 
      stond  wordt dan  via REBOOT.BAT  uitgevoerd. Hier volgt een 
      batchfile die een MemMan programma uitvoert...
      
      
               M P . B A T 
      
               IF %MP%A==A SET MP=%1
               IF %MP%A==A SET MP=B:\MOD
      
      Als MP leeg is, wordt de parameter achet MP.BAT in MP gezet. 
      Als  MP nu  nog leeg  is, en  dus niks  in de parameter zat, 
      wordt MP gevuld met de directory waar MOD files in staan.
      
               IF NOT %MEMMAN%A==ONA MEMMAN MP
      
      Als  MemMan  nog  niet  in het  geheugen zat,  wordt het  nu 
      geladen. Bij terugkomst in DOS wordt MP.BAT weer uitgevoerd. 
      Vandaar ook dat %1 in een environment item wordt gezet.
      
               MP2.COM %MP%
      
      MP2.COM is een ietwat aangepaste versie van de MOD-player.
      
               SET MP=
      
      %MP% wordt weer gewist.
      
      
               M C M . B A T 
      
      Dit programma laadt MCM-Index in.
      
               PPDIR PUSH
      
      De huidige directory bewaren.
      
               CDD H:\
      
      Overgaan op H:\. CDD wordt besproken op Sunrise Special #2.
      
        IF NOT EXIST MCM.COM   COPY C:\DIVERSEN\MCMINDEX\MCM.COM
        IF NOT EXIST MCM.DAT   COPY C:\DIVERSEN\MCMINDEX\MCM.DAT
        IF NOT EXIST MCM.SET   COPY C:\DIVERSEN\MCMINDEX\MCM.SET
        IF NOT EXIST TREF.NDX  COPY C:\DIVERSEN\MCMINDEX\TREF.NDX
        IF NOT EXIST SOORT.NDX COPY C:\DIVERSEN\MCMINDEX\SOORT.NDX
      
      Als  bovenstaande files  nog niet  in H:\  staan, worden  ze 
      gekopieerd van  de directory C:\DIVERSEN\MCMINDEX. MCM Index 
      werkt namelijk een stukje sneller vanaf RAMdisk.
      
               KEY OFF
      
      Het programma kan niet tegen functietoetsen onder DOS.
      
               H:\MCM.COM
               KEY ON
               PPDIR POP
      
      Directory herstellen.
      
      
                              G E N O E G 
      
      Ik hoop  dat dit  genoeg is  om zelf  handige batchfiles  te 
      kunnen maken. Als er echter vragen zijn, schrijf dan naar de 
      postbus of het bel Sunrise BBS Nuth.
      
                                                    Kasper Souren