Unul dintre cele mai utile moduri de a înregistra și de a depana comportamentul comenzilor sau al lucrărilor pe loturi pe care le executați în Windows este de a redirecționa ieșirea către un fișier.
Există însă câteva moduri diferite prin care puteți redirecționa scrierile din linia de comandă către un fișier. Opțiunea pe care o alegeți depinde de modul în care doriți să vizualizați ieșirea comenzii.
- Cum funcționează ieșirea din promptul de comandă Windows
- Redirecționarea ieșirii standard de scriere către un fișier nou
- Redirecționarea ieșirii standard scrie în același fișier
- Redirecționați eroarea standard către un fișier
- Redirecționați toate scrierile de ieșire către un același fișier
- Silențierea fluxurilor de ieșire standard sau de eroare
Cum funcționează ieșirea din promptul de comandă Windows
Când tastați o comandă în consola Windows (promptul de comandă), ieșirea din acea comandă merge în două fluxuri separate.
- STDOUT: Standard Out este locul unde se duc toate răspunsurile standard de la comenzi. De exemplu, răspunsul standard pentru comanda DIR este o listă a fișierelor din interiorul unui director.
- STDERR: Standard Error este locul unde merg orice mesaje de eroare în cazul în care există o problemă cu comanda. De exemplu, dacă nu există niciun fișier în director, comanda DIR va emite „File Not Found” în fluxul Standard Error.
Puteți redirecționa ieșirea către un fișier în Windows pentru ambele fluxuri de ieșire.
Redirecționarea ieșirii standard de scriere către un fișier nou
Există două moduri în care puteți redirecționa ieșirea standard a unei comenzi către un fișier. Prima este de a trimite ieșirea de ieșire a comenzii să scrie într-un fișier nou de fiecare dată când executați comanda.
Pentru a face acest lucru, deschideți promptul de comandă și tastați:
dir test.exe > myoutput.txt
Caracterul > îi spune consolei să trimită ieșirea STDOUT în fișierul cu numele pe care l-ați furnizat.
Când executați această comandă, veți observa că nu există nici un răspuns în fereastra de comandă, cu excepția erorii că fișierul nu există.
Acest lucru se datorează faptului că ieșirea standard pentru comandă a fost redirecționată către un fișier numit myoutput.txt. Fișierul există acum în același director în care ați executat comanda. Ieșirea standard de eroare se afișează în continuare așa cum o face în mod normal.
Nota: Aveți grijă să schimbați directorul activ pentru promptul de comandă înainte de a executa comanda. În acest fel veți ști unde sunt stocate fișierele de ieșire.
Puteți vizualiza ieșirea standard care a ajuns în fișier tastând „myoutput.txt” în fereastra de comandă. Acest lucru va deschide fișierul text în vizualizatorul dvs. implicit de fișiere text. Pentru majoritatea oamenilor, acesta este, de obicei, Notepad.exe.
La următoarea execuție a aceleiași comenzi, fișierul de ieșire anterior va fi șters. Un nou fișier de ieșire va fi recreat cu ieșirea ultimei comenzi.
Redirecționarea ieșirii standard scrie în același fișier
Ce se întâmplă dacă nu doriți să suprascrieți același fișier? O altă opțiune este să folosiți >> în loc de > pentru a redirecționa către un fișier de ieșire. În cazul acestui exemplu, veți tasta:
dir test.exe >> myoutput.txt
Vă veți vedea aceeași ieșire (doar eroarea).
Dar în acest caz, în loc să suprascrieți fișierul de ieșire, această comandă anexează noua ieșire la fișierul de ieșire existent.
De fiecare dată când executați o comandă și adăugați ieșirea la un fișier, aceasta va scrie noua ieșire standard la sfârșitul fișierului existent.
Redirecționați eroarea standard către un fișier
În același mod în care puteți redirecționa scrierea ieșirii standard către un fișier, puteți, de asemenea, ieși fluxul de eroare standard către un fișier.
Pentru a face acest lucru, va trebui să adăugați 2> la sfârșitul comenzii, urmat de fișierul de eroare de ieșire pe care doriți să îl creați.
În acest exemplu, veți tasta comanda:
dir test.exe > myoutput.txt 2> output.err
Aceasta trimite fluxul de ieșire standard la myoutput.txt, iar fluxul de eroare standard la output.err. Rezultatul este că nici un flux de ieșire nu este afișat în fereastra de consolă.
Cu toate acestea, puteți vedea mesajele de eroare prin tastarea output.err. Acest lucru va deschide fișierul în vizualizatorul dvs. implicit de fișiere text.
După cum puteți vedea, orice mesaj de eroare din comandă este transmis în fișierul de erori. La fel ca și în cazul ieșirii standard, puteți folosi în schimb >> pentru a adăuga eroarea la erorile din comenzile rulate anterior.
Redirecționați toate scrierile de ieșire către un același fișier
Toate abordările de mai sus au ca rezultat mai multe fișiere. Un fișier este pentru fluxul de ieșire standard și celălalt este pentru fluxul de eroare standard.
Dacă doriți să includeți ambele ieșiri în același fișier, puteți face și acest lucru. Pentru a face acest lucru, trebuie doar să redirecționați toate ieșirile către același fișier folosind următoarea comandă.
dir test.exe 1> myoutput.txt 2>&1
Iată cum funcționează această comandă:
- Sorirea standard este direcționată către fișierul de ieșire identificat cu numărul de ieșire 1.
- Ieșirea de eroare standard identificată de numărul 2 este redirecționată către fișierul de ieșire identificat de numărul 1.
Aceasta va adăuga ieșirea de eroare la sfârșitul ieșirii standard.
Este o modalitate utilă de a vedea toate ieșirile pentru orice comandă într-un singur fișier.
Silențierea fluxurilor de ieșire standard sau de eroare
Puteți, de asemenea, să dezactivați ieșirea standard sau eroarea standard prin redirecționarea ieșirii către un NUL în loc de un fișier.
Utilizând exemplul de mai sus, dacă doriți doar Standard Output și deloc Standard Error, puteți folosi următoarea comandă:
dir test.exe 1> myoutput.txt 2>nul
Aceasta va avea ca rezultat același fișier de ieșire ca în primul exemplu de mai sus, în care ați redirecționat doar Standard Output, dar cu această comandă eroarea nu va avea ecou în interiorul consolei. Nu va crea nici un fișier jurnal de erori.
Acest lucru este util dacă nu vă pasă de erori și nu doriți ca acestea să devină o pacoste.
Puteți efectua oricare dintre aceleași comenzi de ieșire de mai sus din interiorul unui fișier BAT, iar ieșirea din acea linie va merge în fișierul de ieșire pe care îl specificați. Aceasta este o modalitate utilă de a vedea dacă orice comandă din interiorul unui fișier BAT a avut erori atunci când a încercat să ruleze.
.