.BAT

Wikipedia
Loikkaa: valikkoon, hakuun
Batch file
Tiedostopääte: .BAT
Kehittäjä: Microsoft
Tiedoston tyyppi: komentojono

.BAT on tiedostopääte MS-DOS:in komentojonoille. Nämä komentojonot voivat sisältää MS-DOS:in komentotulkin (Command.com), käskyjä, joista osa on ainoastaan komentojonotiedostoja varten. Komentojonot toimivat myös Windowsissa komentorivin kautta, ja Mac OS:ssa ja Linuxissa DOSBox:in kautta.

Rakenne[muokkaa | muokkaa wikitekstiä]

.BAT-tiedostojen rakenne on hyvin yksinkertainen. Komennot kirjoitetaan rivi kerrallaan, erotettuna merkillä 0x13 tai 0x13+0x10. Kun komentojonoja kirjoitetaan Windowsissa, ne tallennetaan yleensä ANSI-koodattuina.

Esimerkkiohjelma[muokkaa | muokkaa wikitekstiä]

 echo Ensimmäinen rivi
 echo Toinen rivi
 echo Kolmas rivi

Yllä oleva ohjelma antaa näytöllä seuraavanlaisen tuloksen:

C:\>echo Ensimmäinen rivi
Ensimmäinen rivi

C:\>echo Toinen rivi
Toinen rivi

C:\>echo Kolmas rivi
Kolmas rivi

Echo-käskyä käytetään tekstirivien tulostamiseen. Tyhjä rivi tulostetaan lisäämällä komennon loppuun piste (echo.). Komentokaiutuksen tilan saa selville kirjoittamalla echo ilman parametrejä. Tulosteena on suomenkielisessä MS-DOS:issa ECHO on ON tai ECHO on OFF.

Komentokaiutus[muokkaa | muokkaa wikitekstiä]

Kuten edellisessä kappaleessa olevasta esimerkkiohjelmasta huomaa, komentokaiutus on oletuksellisesti päällä, eli jokainen komento näytetään ennen sen suorittamista. Jos komennon eteen kirjoitetaan @-merkki, sitä ei kaiuteta:

 @echo Ensimmäinen rivi
 @echo Toinen rivi
 @echo Kolmas rivi

Ohjelman antama tulos:

Ensimmäinen rivi
Toinen rivi
Kolmas rivi

Komentokaiutuksen voi asettaa pois päältä komennolla echo off.

 @echo off
 echo Ensimmäinen rivi
 echo Toinen rivi
 echo Kolmas rivi

Ehtorakenteet[muokkaa | muokkaa wikitekstiä]

Komentojonoissa ei ole varsinaisia ehtorakenteita, sillä ehtorakenteessa voi olla vain yksi käsky kerrallaan. Tämä käsky on if, ja sille on kolme erilaista käyttötarkoitusta:

  • Merkkijonojen vertailu: if [not] merkkijono1==merkkijono käsky
  • Palautusarvon (errorlevel) tarkistus: if [not] errorlevel arvo komento
  • Tiedoston olemassaolon tarkistus: if [not] exist tiedosto komento

Merkkijonojen vertailussa on huomattava, että kumpikaan merkkijono ei saa olla tyhjä. Errorlevel tarkoittaa edellisen ohjelman palauttamaa virhekoodia. Not muuttaa vertailun käänteiseksi.

Hyppykäskyt[muokkaa | muokkaa wikitekstiä]

Komentojonoissa käytettävä hyppykäsky on goto. Sen syntaksi on goto nimi. Nimiöt määritellään koodilla :nimi. Esimerkki:

 @echo off
 :alku
 echo Hello World!
 goto alku

Ohjelma toistaa lausetta "Hello World!" loputtomiin. Ohjelmasta voi poistua kesken näppäinyhdistelmällä Ctrl+C.

Vinkki[muokkaa | muokkaa wikitekstiä]

Monen käskyn ehtorakenteita voi luoda hyppykäskyjen avulla:

 @echo off
 echo Onko tiedosto.txt olemassa?
 echo.
 if not exist tiedosto.txt goto muuten
  echo -On olemassa!
  echo -On tosiaankin.
  echo -Niin muuten on.
 goto loppu
 :muuten
  echo -Ei ole olemassa!
  echo -Ei niin.
  echo -Ei tosiaankaan.
 :loppu
 echo.
 echo Ohjelma loppuu.
 pause

Parametrit[muokkaa | muokkaa wikitekstiä]

Komentojonoja kutsuttaessa niille voidaan välittää parametrejä. Niihin viitataan ohjelmassa kirjainyhdistelmällä %parametrinnumero, eli ensimmäinen parametri on %1, toinen %2 jne. Parametrejä voi olla korkeintaan yhdeksän, ja esimerkiksi yhdistelmä %10 tarkoittaa ensimmäistä parametriä, jonka jälkeen tulee nolla.

Esimerkki[muokkaa | muokkaa wikitekstiä]

 @echo off
 echo Ensimmäinen parametri on %1.
 echo Toinen parametri on %2.
 echo Kolmas parametri on %3.

On olemassa myös nk. nollaparametri, eli %0, josta näkyy komentojonon nimen kirjoitusasu, kun sitä kutsuttiin.

Kysymykset[muokkaa | muokkaa wikitekstiä]

Choice -käskyä käytetään kysymyksen esittämiseen käyttäjälle. Vastaus palautetaan errorlevel -muuttujaan. Komennon syntaksi on seuraava:

 choice /c:vastaukset kysymys

eli esimerkiksi:

 choice /C:ABC Valitse A, B tai C:

Käyttäjä valitsee vastauksen painamalla sille määrättyä kirjainta. Errorlevel määräytyy siten, että ensimmäinen vaihtoehto on 1, toinen 2 jne.

Choice-käskylle on muitakin parametrejä, ja ne saa selville kirjoittamalla komentoriviin choice /?. Windows Vistan choicen syntaksi poikkeaa hieman vanhasta syntaksista:

 choice /C:ABC /M Valitse A, B tai C:

Muuttujat[muokkaa | muokkaa wikitekstiä]

Komentojonot osaavat käsitellä DOS:in ja Windowsin ympäristömuuttujia, joihin viitataan kirjoittamalla %muuttuja%. Muuttujat voidaan asettaa komennolla set seuraavasti:

 set muuttuja=arvo

Tiedostoihin kirjoitus[muokkaa | muokkaa wikitekstiä]

Tiedostoja voidaan uudelleenkirjoittaa ohjaamalla käskyjen syötteet niihin. Esimerkki:

 echo Heippa! >tiedosto.txt

Kirjoittaa "Heippa!" tiedostoon tiedosto.txt.

Myös kommentojen tulosten ja virheet voidaan suunnata tiedostoihin

 for /f %%i in ('dir /s /b /a-d') echo tiedosto --- %%i >>ajo.log 2>>virhelogi.log

Muuta[muokkaa | muokkaa wikitekstiä]

Näytön tyhjennys[muokkaa | muokkaa wikitekstiä]

Cls-käsky tyhjentää näytön ja siirtää kursorin vasempaan yläkulmaan.

Näppäimen odotus[muokkaa | muokkaa wikitekstiä]

Pause-käsky odottaa, kunnes painetaan jotakin näppäintä, ja tulostaa tekstin "Jatka painamalla mitä tahansa näppäintä. . .".

>NUL[muokkaa | muokkaa wikitekstiä]

Jos käskyn loppuun lisää >NUL, sen tulosteet eivät näy. Tästä on hyötyä erityisesti pause-käskyn kanssa ja joskus myös choicen.

For[muokkaa | muokkaa wikitekstiä]

For-käsky käy läpi tiedostoja ja suorittaa niille halutun komennon. Sen syntaksi on seuraava: for %%muuttuja in (tiedostojoukko) do käsky. Seuraava käsky tulostaa kaikkien nykyisen hakemiston tiedostojen nimet:

 for %%k in (*.*) do echo %%k

Uusien Windowsien komentoriveissä for-käskylle on muitakin käyttötarkoituksia. Ne saa selville kirjoittamalla komentoriviin for /?.

Shift[muokkaa | muokkaa wikitekstiä]

Shift-käsky siirtää parametrejä yhden pykälän vasemmalle. Eli parametri, jonka numero oli ennen käskyä 2, onkin nyt parametri numero 1.

Kommentit[muokkaa | muokkaa wikitekstiä]

Koodia voi kommentoida rem-"käskyllä" seuraavasti:

 rem Kommentti

Lähteet[muokkaa | muokkaa wikitekstiä]