Yksi hyödyllisimmistä tavoista Windowsissa suoritettavien komentojen tai eräajotehtävien käyttäytymisen kirjaamiseen ja vianmääritykseen on ulostulon ohjaaminen tiedostoon.
Komentorivin kirjoitukset voidaan kuitenkin ohjata tiedostoon muutamalla eri tavalla. Valitsemasi vaihtoehto riippuu siitä, miten haluat tarkastella komentotulostetta.
- Miten Windowsin komentorivin ulostulo toimii
- Vakiotulosteen uudelleenohjaus Kirjoita uuteen tiedostoon
- Vakiotulosteen uudelleenohjaus kirjoittaa samaan tiedostoon
- Vakiovirhevirran ohjaaminen tiedostoon
- OHJAA KAIKKI TULOSTEN KIRJOITUKSET SAMAAN TIEDOSTOON
- Standardi- tai virhetulostusvirtojen hiljentäminen
Miten Windowsin komentorivin ulostulo toimii
Kun kirjoitat komennon Windowsin konsoliin (komentokehotteeseen), komennon ulostulot menevät kahteen erilliseen tietovirtaan.
- STDOUT: Standard Out on paikka, jonne kaikki komentojen standardivastaukset menevät. Esimerkiksi DIR-komennon vakiovastaus on luettelo hakemiston sisällä olevista tiedostoista.
- STDERR: Standard Error (vakiovirhe) on paikka, jonne mahdolliset virheilmoitukset menevät, jos komennossa on ongelmia. Jos esimerkiksi hakemistossa ei ole yhtään tiedostoa, DIR-komento antaa tulosteen ”File Not Found” (Tiedostoa ei löytynyt) Vakiovirhevirtaan.
Molempien näiden tulostusvirtojen kohdalla voit ohjata tulosteen tiedostoon Windowsissa.
Vakiotulosteen uudelleenohjaus Kirjoita uuteen tiedostoon
Komennon vakiotulosteen uudelleenohjaus uuteen tiedostoon voi tapahtua kahdella tavalla. Ensimmäinen on lähettää komennon ulostulon kirjoitus uuteen tiedostoon joka kerta, kun suoritat komennon.
Tehdäksesi tämän avaa komentorivi ja kirjoita:
dir test.exe > myoutput.txt
Merkki > käskee konsolia antamaan STDOUT-ulostulon antamallasi nimellä olevaan tiedostoon.
Kun suoritat tämän komennon, huomaat, että komentoikkunassa ei näy muuta vastausta kuin virheilmoitus siitä, että tiedostoa ei ole olemassa.
Tämä johtuu siitä, että komennon vakiotuloste ohjattiin tiedostoon nimeltä myoutput.txt. Tiedosto on nyt olemassa samassa hakemistossa, jossa suoritit komennon. Vakiovirhetuloste näkyy edelleen normaalisti.
Huomautus: Muista vaihtaa komentorivin aktiivinen hakemisto ennen komennon suorittamista. Näin tiedät, mihin tulostiedostot tallennetaan.
Voit tarkastella tiedostoon menneen standarditulosteen kirjoittamalla komentoikkunaan ”myoutput.txt”. Tämä avaa tekstitiedoston oletustekstitiedostojen katseluohjelmassa. Useimmille ihmisille tämä on yleensä Notepad.exe.
Kun suoritat seuraavan kerran saman komennon, edellinen tulostiedosto poistetaan. Uusi tulostustiedosto luodaan uudelleen viimeisimmän komennon tulosteella.
Vakiotulosteen uudelleenohjaus kirjoittaa samaan tiedostoon
Entä jos et halua korvata samaa tiedostoa? Toinen vaihtoehto on käyttää >>:aa >:n sijasta >:aa ohjaamaan tulostustiedostoon. Tämän esimerkin tapauksessa kirjoittaisit:
dir test.exe >> myoutput.txt
Näet saman tulosteen (vain virheen).
Mutta tässä tapauksessa tämä komento liittää uuden tulosteen olemassa olevaan tulostetiedostoon sen sijaan, että se kirjoittaisi tulostetiedoston päällekkäin.
Joka kerta, kun suoritat komennon ja liität tulosteen tiedostoon, se kirjoittaa uuden vakiotulosteen olemassa olevan tiedoston loppuun.
Vakiovirhevirran ohjaaminen tiedostoon
Samoin kuin voit ohjata vakiotulostuskirjoitukset tiedostoon, voit myös tulostaa vakiovirhevirran tiedostoon.
Tehdäksesi tämän sinun on lisättävä komennon loppuun 2> ja sen jälkeen haluamasi tulostusvirhetiedosto.
Tässä esimerkissä kirjoitat komennon:
dir test.exe > myoutput.txt 2> output.err
Tällöin vakiotulostusvirta lähetetään tiedostoon myoutput.txt ja vakiovirhevirta tiedostoon output.err. Tuloksena on, että konsoli-ikkunassa ei näy lainkaan tulostusvirtaa.
Virheilmoitukset näet kuitenkin kirjoittamalla output.err. Tämä avaa tiedoston oletustekstitiedoston katseluohjelmassa.
Kuten näet, kaikki komennon virheilmoitukset tulostuvat virhetiedostoon. Aivan kuten vakiotulosteen kohdalla, voit sen sijaan käyttää >>-merkkiä liittääksesi virheen aiemmin suoritettujen komentojen virheisiin.
OHJAA KAIKKI TULOSTEN KIRJOITUKSET SAMAAN TIEDOSTOON
Kaikki edellä mainitut lähestymistavat johtavat useisiin tiedostoihin. Yksi tiedosto on vakiotulostusvirtaa varten ja toinen vakiovirhevirtaa varten.
Jos haluat sisällyttää molemmat tulosteet samaan tiedostoon, voit tehdä senkin. Tätä varten sinun tarvitsee vain ohjata kaikki ulostulot samaan tiedostoon seuraavalla komennolla.
dir test.exe 1> myoutput.txt 2>&1
Näin tämä komento toimii:
- Vakiolähtö ohjataan ulostulonumerolla 1 yksilöityyn tulostiedostoon.
- Numerolla 2 yksilöity vakiovirhetuloste ohjataan numerolla 1 yksilöityyn tulostiedostoon.
Tämä liittää virhetulosteen vakiotulosteen loppuun.
Tämä on hyödyllinen tapa nähdä minkä tahansa komennon kaikki tulosteet yhdessä tiedostossa.
Standardi- tai virhetulostusvirtojen hiljentäminen
Vakiotulostuksen tai -virheen voi myös kytkeä pois päältä ohjaamalla tulostuksen tiedoston sijasta NUL-kirjaimeen.
Käytettäessä yllä olevaa esimerkkiä, jos haluat vain Standard Outputin eikä lainkaan Standard Erroria, voit käyttää seuraavaa komentoa:
dir test.exe 1> myoutput.txt 2>nul
Tällöin tuloksena on sama tulostustiedosto kuin ensimmäisessä yllä olevassa esimerkissä, jossa ohjasit vain Standard Outputin, mutta tällä komennolla virhe ei kaiku konsolin sisällä. Se ei myöskään luo virhelokitiedostoa.
Tämä on hyödyllistä, jos et välitä mistään virheistä etkä halua, että niistä tulee riesaa.
Voit suorittaa minkä tahansa edellä mainituista samoista tulostuskomennoista BAT-tiedoston sisältä, ja kyseisen rivin tulosteet menevät määrittämääsi tulostustiedostoon. Tämä on hyödyllinen tapa nähdä, onko BAT-tiedoston sisällä olevissa komennoissa ollut virheitä, kun niitä yritettiin suorittaa.