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

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.

Vastaa

Sähköpostiosoitettasi ei julkaista.