.BAT
| 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.
Sisällysluettelo |
Rakenne [muokkaa]
.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]
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) 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]
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ää näytön ja siirtää kursorin vasempaan yläkulmaan.
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.
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.
Kommentit [muokkaa]
Koodia voi kommentoida rem-"käskyllä" seuraavasti:
rem Kommentti