.BAT
.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 DOSBoxin kautta. Komentojonotiedostoilla voi suorittaa peruslaskutoimituksia mutta ei liukulukuja. Myös esimerkiksi ohjelmia voi avata komentojonotiedostojen kautta esim. calc avaa laskimen.
Batch file | |
---|---|
Tiedostopääte |
.BAT |
Kehittäjä | Microsoft |
Tiedoston tyyppi | komentojono |
Rakenne muokkaa
.BAT-tiedostojen rakenne on hyvin yksinkertainen. Komennot kirjoitetaan rivi kerrallaan, erotettuna rivivaihtomerkillä 0x13 tai 0x13+0x10.
Esimerkkiohjelma muokkaa
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
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
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) tarkastus: if [not] errorlevel arvo komento
- Tiedoston olemassaolon tarkastus: 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
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
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
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
@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
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
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
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
Näytön tyhjennys muokkaa
Cls-käsky tyhjentää tiedoston tekstin, mikäli se on mahdollista.
Näppäimen odotus muokkaa
Pause-käsky odottaa, kunnes painetaan jotakin näppäintä, ja tulostaa tekstin "Jatka painamalla mitä tahansa näppäintä. . .".
>NUL muokkaa
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.
Vinkki:
Jos tekee ohjelman .bat-muotoon, ja siinä tarvitaan Pause-käskyä, tämä kannattaa tehdä Pause-käskyn loppuun.
For muokkaa
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
Shift-käsky siirtää parametrejä yhden pykälän vasemmalle. Eli parametri, jonka numero oli ennen käskyä 2, onkin nyt parametri numero 1.
Yhteenlasku muokkaa
@echo off
set /a a = 2
set /a b = 10
set /a c = %a%+%b%
echo %c%
Kommentit muokkaa
Koodia voi kommentoida rem-"käskyllä" seuraavasti:
rem Kommentti