Omdirigerar utdata från Windows-kommandoraden till en textfil

Ett av de mest användbara sätten att logga och felsöka beteendet för kommandon eller batchjobb som körs in Windows omdirigerar utdata till en fil.

Det finns dock flera sätt att omdirigera en post från kommandoraden till en fil. Alternativet du väljer beror på hur du vill se resultatet av ditt kommando.

Hur Windows kommandoradsutgång fungerar(Hur Windows Command Prompt Output fungerar)

När du anger ett kommando i konsolen Windows ( kommandotolken), utmatningen av detta kommando riktas till två separata strömmar.

  • STDOUT : Standard ut är platsen dit alla standardsvar från kommandon skickas. Till exempel standardsvaret på kommandot DIR är en lista över filer i en katalog.
  • STDERR : standard fel(Standardfel) är dit alla felmeddelanden går om det finns ett problem med kommandot. Till exempel, om det inte finns några filer i katalogen, kommandot DIR kommer att mata ut ” Fil(File) not found” till standardström fel.(standard fel)

Du kan omdirigera utdata till en fil i Windows för båda dessa utströmmar.

Omdirigera stdout-skriv till ny fil(Omdirigera standardutdata skriv till ny fil)

Det finns två sätt att omdirigera standardutdata från ett kommando till en fil. Den första är att skicka utdata från kommandot som ska skrivas till en ny fil varje gång du kör kommandot.

För att göra detta, öppna en kommandotolk och skriv:

dir test.exe > myoutput.txt

Symbolen > talar om för konsolen att mata ut STDOUT till en fil med det namn du anger.

När du kör det här kommandot (kör detta kommando) kommer du att märka att det inte finns något svar i kommandofönstret annat än ett felmeddelande om att filen inte finns.

Detta beror på att standardutdata från kommandot har omdirigerats till en fil med namnet myoutput.txt. Filen finns nu i samma katalog där du körde kommandot. Standardfelutgången visas fortfarande som vanligt.

Notera(Notera) . Var noga med att ändra den aktiva katalogen för kommandoraden innan du kör kommandot. På så sätt kommer du att veta var utdatafilerna är lagrade.

Du kan se standardutdata som skickades till en fil genom att skriva “myoutput.txt” i kommandofönstret. Detta öppnar textfilen i standardtextfilvisningen. För de flesta är detta vanligtvis Notepad.exe .

Nästa gång du kör samma kommando kommer den föregående utdatafilen att raderas. Den nya utdatafilen kommer att återskapas med utdata från det sista kommandot.

Redirect Entry standardutgång till det (standardutgång)samma fil(Samma fil)

Vad händer om du inte vill skriva över samma fil? Ett annat alternativ är att använda >> istället för > för att omdirigera till utdatafilen. I det här exemplet skulle du ange:

dir test.exe >> myoutput.txt

Du kommer att se samma utdata (bara ett fel).

Men i det här fallet, istället för att skriva över utdatafilen, lägger detta kommando till den nya utdatafilen till den befintliga utdatafilen.

Varje gång du kör ett kommando och lägger till utdata till en fil, skriver den en ny standardutdata till slutet av den befintliga filen.

Omdirigera standardfel till fil(Omdirigera standardfel till en fil)

På samma sätt som du kan omdirigera standardutdata till en fil, kan du också skriva standardfel till en fil.

För detta måste du lägga till 2> till slutet av kommandot och sedan felutdatafilen du vill skapa.

I det här exemplet kommer du att skriva kommandot:

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

Detta skickar standardutdata till myoutput.txt och standardfel till output.err. Som ett resultat av detta visas ingen utdataström i konsolfönstret alls.

Du kan dock se felmeddelanden genom att skriva output.err . Detta öppnar filen i standardtextfilvisningen.

Som du kan se matas alla felmeddelanden från kommandot ut till felfilen. Hur(Bara) och i fallet med stdout kan du använda istället >> för att lägga till ett fel till fel från tidigare körda kommandon.

Omdirigera alla utdataposter till samma fil(Omdirigera alla utdataskrivningar till samma fil)

Alla de metoder som beskrivs ovan resulterar i skapandet av flera filer. En fil är för standardutdata och den andra är för standardfel.

Om du vill inkludera båda dessa utdata i samma fil kan du göra det också. För att göra detta behöver du bara omdirigera all utdata till samma fil med följande kommando.

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

Så här fungerar det här kommandot:

  • Standardutdata skickas till utdatafilen, betecknad med utdatanummer 1.
  • Standardfelutgången, betecknad med 2, omdirigeras till utdatafilen, betecknad med 1.

Detta kommer att lägga till felutgången i slutet av standardutgången.

Detta är ett användbart sätt att se all utdata för alla kommandon i en fil.

Tysta standardutdata eller felströmmar(Tysta standard- eller felutgångsströmmar)

Du kan också inaktivera standardutgång(Standardutgång) eller standard fel(Standard Error) , omdirigerar utgången till NUL istället för en fil.

Använd exemplet ovan, om du bara behöver standardutgång(Standardutgång) och ingen alls standardfel(Standardfel), kan du använda följande kommando:

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

Detta kommer att producera samma utdatafil som det första exemplet ovan, dit du bara omdirigerade standardutgång(Standard Output), men med detta kommando kommer felet inte att visas inuti konsolen. Det kommer inte heller att skapa en felloggfil.

Detta är användbart om du inte bryr dig om buggar och inte vill att de ska bli till besvär.

Du kan köra vilket som helst av samma utdatakommandon som ovan inifrån en BAT-fil och utdata från den raden kommer att skickas till utdatafilen du angav. Det här är ett användbart sätt att ta reda på om det fanns några kommandon FLADDERMUS – en fil med fel när du försöker köra.

Ett av de mest användbara sätten att logga och felsöka beteendet hos kommandon eller batchjobb som du kör på Windows är att omdirigera utdata till en fil.

Det finns dock några olika sätt du kan omdirigera kommandoradsskrivningar till en fil. Alternativet du väljer beror på hur du vill se ditt kommandoutdata.

Hur Windows Command Prompt Output fungerar

När du skriver ett kommando i Windows-konsolen (kommandotolken), går utdata från det kommandot till två separata strömmar.

  • STDOUT: Standard Out är dit alla standardsvar från kommandon går. Till exempel är standardsvaret för DIR-kommandot en lista över filer i en katalog.
  • STDERR: Standardfel är dit alla felmeddelanden går om det finns ett problem med kommandot. Till exempel om det inte finns några filer i katalogen, kommer DIR-kommandot att mata ut “File Not Found” till standardfelströmmen.

Du kan omdirigera utdata till en fil i Windows för båda dessa utdataströmmar.

Omdirigera standardutdata Skriv till ny fil

Det finns två sätt att omdirigera standardutdata från ett kommando till en fil. Den första är att skicka kommandot utskriv till en ny fil varje gång du kör kommandot.

För att göra detta, öppna kommandotolken och skriv:

dir test.exe > myoutput.txt

Tecknet > talar om för konsolen att mata ut STDOUT till filen med det namn du har angett.

När du kör det här kommandot kommer du att märka att det inte finns något svar i kommandofönstret förutom felet att filen inte finns.

Detta beror på att standardutdata för kommandot omdirigerades till en fil som heter myoutput.txt. Filen finns nu i samma katalog där du körde kommandot. Standardfelutgången visas fortfarande som vanligt.

notera: Var noga med att ändra den aktiva katalogen för kommandotolken innan du kör kommandot. På så sätt vet du var utdatafilerna är lagrade.

Du kan se standardutdata som gick till filen genom att skriva “myoutput.txt” i kommandofönstret. Detta öppnar textfilen i din standardtextfilvisare. För de flesta är detta vanligtvis Notepad.exe.

Nästa gång du kör samma kommando kommer den föregående utdatafilen att raderas. En ny utdatafil kommer att återskapas med det senaste kommandots utdata.

Omdirigera standardutdata Skriver till samma fil

Vad händer om du inte vill skriva över samma fil? Ett annat alternativ är att använda >> istället för > för att omdirigera till en utdatafil. I det här exemplet skulle du skriva:

dir test.exe >> myoutput.txt

Du kommer att se samma utdata (endast felet).

Men i det här fallet, istället för att skriva över utdatafilen, lägger detta kommando till den nya utdatafilen till den befintliga utdatafilen.

Varje gång du kör ett kommando och lägger till utdata till en fil, kommer det att skriva den nya standardutdata till slutet av den befintliga filen.

Omdirigera standardfel till en fil

På samma sätt som du kan omdirigera standardutdata till en fil, kan du också mata ut standardfelströmmen till en fil.

För att göra detta måste du lägga till 2> till slutet av kommandot, följt av utdatafelfilen du vill skapa.

I det här exemplet skriver du kommandot:

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

Detta skickar standardutgångsströmmen till myoutput.txt och standardfelströmmen till output.err. Resultatet är att ingen utdataström alls visas i konsolfönstret.

Du kan dock se felmeddelandena genom att skriva output.err. Detta öppnar filen i din standardtextfilvisare.

Som du kan se matas alla felmeddelanden från kommandot ut till felfilen. Precis som med standardutgången kan du använda >> istället för att lägga till felet till fel från tidigare körda kommandon.

Omdirigera alla utdataskrivningar till samma fil

Alla metoderna ovan resulterar i flera filer. En fil är för standardutdataströmmen och den andra är för standardfelströmmen.

Om du vill inkludera båda dessa utdata till samma fil kan du göra det också. För att göra detta behöver du bara omdirigera all utdata till samma fil med följande kommando.

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

Så här fungerar kommandot:

  • Standardutmatningen riktas till utdatafilen som identifieras av utdatanummer 1.
  • Standardfelutgången identifierad med siffran 2 omdirigeras till utdatafilen identifierad med siffran 1.

Detta kommer att lägga till felutgången i slutet av standardutgången.

Detta är ett användbart sätt att se all utdata för alla kommandon i en fil.

Tysta standard- eller felutgångsströmmar

Du kan också stänga av antingen Standard Output eller Standard Error genom att omdirigera utdata till en NUL istället för en fil.

Om du använder exemplet ovan, om du bara vill ha standardutdata och inget standardfel alls, kan du använda följande kommando:

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

Detta kommer att resultera i samma utdatafil som det första exemplet ovan där du bara omdirigerade standardutgången, men med detta kommando kommer felet inte att eka inuti konsolen. Det kommer inte heller att skapa en felloggfil.

Detta är användbart om du inte bryr dig om några fel och inte vill att de ska bli till besvär.

Du kan utföra något av samma utdatakommandon ovan inifrån en BAT-fil och utdata från den raden kommer att gå till utdatafilen du anger. Det här är ett användbart sätt att se om några kommandon i en BAT-fil hade några fel när de försökte köras.