Omdirigera utdata från Windows kommandorad till en textfil

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(How Windows Command Prompt Output Works)

När du skriver ett kommando i Windows -konsolen ( kommandotolken(command prompt) ), 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(Standard Error) ä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(Standard Error) .

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

Omdirigera standardutdata Skriv till ny fil(Redirect Standard Output Write to New File)

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(run this command) 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.

Obs(Note) : Var noga med att ändra den aktiva katalogen(change the active directory) 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(Standard Output) Skriver till samma fil(Same File)

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(Redirect Standard Error To a File)

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> i 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(Just) som med standardutgången kan du istället använda >> för att lägga till felet till fel från tidigare körda kommandon.

Omdirigera alla utdataskrivningar till samma fil(Redirect All Output Writes to a Same File)

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

Om du vill inkludera båda dessa utgångar 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(Silencing Standard or Error Output Streams)

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(Standard Output) och inget standardfel(Standard Error) 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 standardutdata(Standard Output) , 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(inside a BAT file) 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.



About the author

Jag är en webbutvecklare med över 10 års erfarenhet av att arbeta med webbläsarna Firefox och Google Docs. Jag är specialist på att skapa enkla men kraftfulla onlineapplikationer och har utvecklat webbaserade lösningar för både små företag och stora organisationer. Min kundbas inkluderar några av de största företagen, inklusive FedEx, Coca Cola och Macy's. Mina kunskaper som utvecklare gör mig till en idealisk kandidat för alla projekt som behöver slutföras snabbt och effektivt - från att utveckla anpassade webbplatser till att skapa robusta e-postmarknadsföringskampanjer.



Related posts