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:
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