Przekierowanie standardowego wyjścia polecenia do pliku

7-sie-2012

Rafał, chcę aby wynik komendy uruchamianej z linii poleceń znalazł się w pliku tekstowym. Mam takie polecenie:

script.bat > result.txt

tymczasem plik powstaje pusty, a na ekranie widzę komunikat o błędzie! Przecież nie powinno się nic wyświetlać na ekranie, a raczej w tym pliku!

no… nie do końca. Każde polecenie ma otwarte 3 „kanały komunikacji” ze światem:

  • standard input – domyślne wejście do programu, którym zazwyczaj jest klawiatura
  • standard output, którym zazwyczaj jest ekran
  • standard error output, którym domyślnie jest też ekran.

Jeżeli przekierowałeś wyjście programu poprzez wpisanie za komendą znaków

> result.txt

to przekierowałeś jedynie standardowe wyjście. Kiedy twój skrypt napotka na błąd, to wyświetla go nadal na standardowe wyjście jakim jest ekran. Jeżeli chcesz aby i błędy były zapisywane do pliku napisz tak:

script.bat > result.txt 2>errors.txt

Jeżeli zaś chciałbyś aby i wynik komendy i jej błędy zostały przekierowane do tego samego pliku napisz tak:

script.bat > result.txt &2>1

 
Pisanie skryptów w systemie Windows, pozwala zautomatyzować czynności, które w przeciwnym wypadku zajęły by nam wiele czasu. Nie są to rzeczy trudne, ale na pewno trudno je samemu poznać. Jeżeli temat wydaje ci się interesujący możesz zapoznać się z jedną z prezentowanych poniżej książek. Jedna nieco starsza, pokaże ci jak tworzyć własne skrypty w Windows XP. Druga zaprezentuje ten sam przedmiot ale w Windows 7. Sam też się tego kiedyś uczyłem 🙂 Życzę miłej lektury!

Komentarze:

  1. Rysiu22 napisał,

    w artykule „Przekierowanie standardowego wyjścia polecenia do pliku”
    jest błąd.
    script.bat > result.txt &2>1
    nie działa
    powinno być
    script.bat > result.txt 2>&1

Autor: Rafał Kraik