.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 DOSBoxin kautta. Komentojonotiedostoilla voi suorittaa peruslaskutoimituksia mutta ei liukulukuja. Myös esimerkiksi ohjelmia voi avata komentojonotiedostojen kautta esim. calc avaa laskimen.
Rakenne
[muokkaa | muokkaa wikitekstiä].BAT-tiedostojen rakenne on hyvin yksinkertainen. Komennot kirjoitetaan rivi kerrallaan, erotettuna rivivaihtomerkillä 0x13 tai 0x13+0x10.
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) 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 | 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ää tiedoston tekstin, mikäli se on mahdollista.
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.
Vinkki:
Jos tekee ohjelman .bat-muotoon, ja siinä tarvitaan Pause-käskyä, tämä kannattaa tehdä Pause-käskyn loppuun.
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.
Yhteenlasku
[muokkaa | muokkaa wikitekstiä]@echo off
set /a a = 2
set /a b = 10
set /a c = %a%+%b%
echo %c%
Kommentit
[muokkaa | muokkaa wikitekstiä]Koodia voi kommentoida rem-"käskyllä" seuraavasti:
rem Kommentti