Uitvoer van de Windows-opdrachtregel omleiden naar een tekstbestand

Een van de handigste manieren om het gedrag van opdrachten of batchtaken die u op Windows uitvoert te loggen en problemen op te lossen, is door de uitvoer om te leiden naar een bestand.

Er zijn echter een paar verschillende manieren waarop u schrijfopdrachten op de opdrachtregel naar een bestand kunt omleiden. De optie die u kiest, hangt af van hoe u uw opdrachtuitvoer wilt bekijken.

Hoe Windows-opdrachtpromptuitvoer werkt(How Windows Command Prompt Output Works)

Wanneer u een opdracht typt in de Windows -console ( opdrachtprompt(command prompt) ), gaat de uitvoer van die opdracht naar twee afzonderlijke streams.

  • STDOUT : Standard Out is waar alle standaardantwoorden van opdrachten naartoe gaan. Het standaardantwoord voor het DIR- commando is bijvoorbeeld een lijst met bestanden in een map.
  • STDERR : Standaardfout(Standard Error) is waar eventuele foutmeldingen naartoe gaan als er een probleem is met de opdracht. Als er bijvoorbeeld geen bestanden in de map staan, zal het DIR -commando " Bestand(File) niet gevonden" uitvoeren naar de standaardfoutstroom(Standard Error) .

U kunt uitvoer omleiden naar een bestand in Windows voor beide uitvoerstromen.

Standaarduitvoer omleiden naar nieuw bestand schrijven(Redirect Standard Output Write to New File)

Er zijn twee manieren waarop u de standaarduitvoer van een opdracht naar een bestand kunt omleiden. De eerste is om de opdrachtuitvoer naar een nieuw bestand te sturen telkens wanneer u de opdracht uitvoert.

Open hiervoor de opdrachtprompt en typ:

dir test.exe > myoutput.txt

Het > teken vertelt de console om STDOUT uit te voeren naar het bestand met de naam die je hebt opgegeven.

Wanneer u deze opdracht uitvoert(run this command) , zult u merken dat er geen reactie is in het opdrachtvenster, behalve de fout dat het bestand niet bestaat.

Dit komt omdat de standaarduitvoer voor de opdracht is omgeleid naar een bestand met de naam myoutput.txt. Het bestand bestaat nu in dezelfde map waarin u de opdracht hebt uitgevoerd. De standaardfoutuitvoer wordt nog steeds weergegeven zoals normaal.

Opmerking(Note) : Zorg ervoor dat u de actieve map(change the active directory) voor de opdrachtprompt wijzigt voordat u de opdracht uitvoert. Op deze manier weet u waar de uitvoerbestanden zijn opgeslagen.

U kunt de standaarduitvoer die naar het bestand is gegaan, bekijken door "myoutput.txt" in het opdrachtvenster te typen. Dit opent het tekstbestand in uw standaard tekstbestandviewer. Voor de meeste mensen is dit meestal Notepad.exe .

De volgende keer dat u dezelfde opdracht uitvoert, wordt het vorige uitvoerbestand verwijderd. Een nieuw uitvoerbestand wordt opnieuw gemaakt met de uitvoer van de laatste opdracht.

Omleiden van standaarduitvoer(Standard Output) schrijft naar hetzelfde bestand(Same File)

Wat als u hetzelfde bestand niet wilt overschrijven? Een andere optie is om >> in plaats van > te gebruiken om door te verwijzen naar een uitvoerbestand. In het geval van dit voorbeeld typt u:

dir test.exe >> myoutput.txt

U ziet dezelfde uitvoer (alleen de fout).

Maar in dit geval, in plaats van het uitvoerbestand te overschrijven, voegt deze opdracht de nieuwe uitvoer toe aan het bestaande uitvoerbestand.

Elke keer dat u een opdracht uitvoert en de uitvoer aan een bestand toevoegt, wordt de nieuwe standaarduitvoer naar het einde van het bestaande bestand geschreven.

Standaardfout omleiden naar een bestand(Redirect Standard Error To a File)

Op dezelfde manier waarop u schrijfbewerkingen met standaarduitvoer naar een bestand kunt omleiden, kunt u de standaardfoutstroom ook naar een bestand uitvoeren.

Om dit te doen, moet u 2> toevoegen aan het einde van de opdracht, gevolgd door het uitvoerfoutbestand dat u wilt maken.

In dit voorbeeld typt u de opdracht: 

dir test.exe > myoutput.txt 2> output.err

Dit stuurt de standaard uitvoerstroom naar myoutput.txt en de standaardfoutstroom naar output.err. Het resultaat is dat er helemaal geen uitvoerstroom wordt weergegeven in het consolevenster.

U kunt de foutmeldingen echter zien door output.err te typen . Dit opent het bestand in uw standaard tekstbestandviewer.

Zoals u kunt zien, worden eventuele foutmeldingen van de opdracht uitgevoerd naar het foutbestand. Net(Just) als bij de standaarduitvoer, kunt u in plaats daarvan >> gebruiken om de fout toe te voegen aan fouten van eerder uitgevoerde opdrachten.

Alle uitgevoerde schrijfbewerkingen omleiden naar hetzelfde bestand(Redirect All Output Writes to a Same File)

Alle bovenstaande benaderingen resulteren in meerdere bestanden. Het ene bestand is voor de standaarduitvoerstroom en het andere is voor de standaardfoutstroom.

Als u beide uitgangen in hetzelfde bestand wilt opnemen, kunt u dat ook doen. Om dit te doen, hoeft u alleen maar alle uitvoer naar hetzelfde bestand om te leiden met behulp van de volgende opdracht.

dir test.exe 1> myoutput.txt 2>&1

Zo werkt deze opdracht:

  • De standaarduitvoer wordt naar het uitvoerbestand geleid dat wordt geïdentificeerd door uitvoernummer 1.
  • De standaardfoutuitvoer geïdentificeerd door nummer 2 wordt doorgestuurd naar het uitvoerbestand geïdentificeerd door nummer 1.

Hierdoor wordt de foutuitvoer toegevoegd aan het einde van de standaarduitvoer.

Dit is een handige manier om alle uitvoer voor een opdracht in één bestand te zien. 

Standaard- of foutuitvoerstromen dempen(Silencing Standard or Error Output Streams)

U kunt ook Standaarduitvoer(Standard Output) of Standaardfout(Standard Error) uitschakelen door de uitvoer om te leiden naar een NUL in plaats van naar een bestand.

Als u het bovenstaande voorbeeld gebruikt en u alleen standaarduitvoer(Standard Output) en helemaal geen standaardfout(Standard Error) wilt , kunt u de volgende opdracht gebruiken:

dir test.exe 1> myoutput.txt 2>nul

Dit resulteert in hetzelfde uitvoerbestand als in het eerste voorbeeld hierboven, waar u alleen de standaarduitvoer(Standard Output) hebt omgeleid , maar met deze opdracht zal de fout niet in de console echoën. Het zal ook geen foutenlogbestand maken.

Dit is handig als u niet om fouten geeft en niet wilt dat ze hinderlijk worden.

U kunt elk van dezelfde uitvoeropdrachten hierboven uitvoeren vanuit een BAT-bestand(inside a BAT file) en de uitvoer van die regel gaat naar het uitvoerbestand dat u opgeeft. Dit is een handige manier om te zien of opdrachten in een BAT -bestand fouten vertoonden toen ze probeerden uit te voeren.



About the author

Ik ben een ervaren software engineer, met meer dan 10 jaar ervaring in het ontwikkelen en onderhouden van Microsoft Office applicaties. Ik heb een sterke passie om anderen te helpen hun doelen te bereiken, zowel door mijn werk als software engineer als door mijn spreek- en netwerkvaardigheden. Ik ben ook zeer goed geïnformeerd over hardware- en toetsenbordstuurprogramma's, aangezien ik er veel zelf heb ontwikkeld en getest.



Related posts