Omdiriger output fra Windows-kommandolinjen til en tekstfil

En af de mest nyttige måder at logge og fejlfinde adfærden for kommandoer eller batchjobs, som du kører på Windows , er at omdirigere output til en fil.

Der er dog et par forskellige måder, hvorpå du kan omdirigere kommandolinjeskrivninger til en fil. Den indstilling, du vælger, afhænger af, hvordan du vil se dit kommandooutput.

Sådan fungerer Windows Kommandoprompt-output(How Windows Command Prompt Output Works)

Når du skriver en kommando i Windows -konsollen ( kommandoprompt(command prompt) ), går outputtet fra den kommando til to separate streams.

  • STDOUT : Standard Out er, hvor alle standardsvar fra kommandoer går. For eksempel er standardsvaret for DIR- kommandoen en liste over filer inde i en mappe.
  • STDERR : Standardfejl(Standard Error) er, hvor alle fejlmeddelelser sendes, hvis der er et problem med kommandoen. For eksempel, hvis der ikke er nogen filer i mappen, vil DIR - kommandoen udsende " File Not Found" til standardfejlstrømmen(Standard Error) .

Du kan omdirigere output til en fil i Windows for begge disse outputstrømme.

Omdiriger standardoutput Skriv til ny fil(Redirect Standard Output Write to New File)

Der er to måder, du kan omdirigere standardoutput af en kommando til en fil. Den første er at sende kommandoen output skrive til en ny fil, hver gang du kører kommandoen.

For at gøre dette skal du åbne kommandoprompten og skrive:

dir test.exe > myoutput.txt

Tegnet > fortæller konsollen om at udsende STDOUT til filen med det navn, du har angivet.

Når du kører denne kommando(run this command) , vil du bemærke, at der ikke er noget svar i kommandovinduet bortset fra fejlen, at filen ikke eksisterer.

Dette skyldes, at standardoutputtet for kommandoen blev omdirigeret til en fil kaldet myoutput.txt. Filen findes nu i den samme mappe, hvor du kørte kommandoen. Standardfejludgangen vises stadig, som den normalt gør.

Bemærk(Note) : Vær omhyggelig med at ændre den aktive mappe(change the active directory) for kommandoprompten, før du kører kommandoen. På denne måde ved du, hvor outputfilerne er gemt.

Du kan se standardoutputtet, der gik til filen, ved at skrive "myoutput.txt" i kommandovinduet. Dette åbner tekstfilen i din standardtekstfilfremviser. For de fleste mennesker er dette normalt Notepad.exe .

Næste gang du kører den samme kommando, slettes den forrige outputfil. En ny outputfil vil blive genskabt med den seneste kommandos output.

Omdiriger standardoutput skriver til den samme fil(Same File)

Hvad hvis du ikke vil overskrive den samme fil? En anden mulighed er at bruge >> i stedet for > til at omdirigere til en outputfil. I tilfælde af dette eksempel skal du skrive:

dir test.exe >> myoutput.txt

Du vil se det samme output (kun fejlen).

Men i dette tilfælde, i stedet for at overskrive outputfilen, tilføjer denne kommando det nye output til den eksisterende outputfil.

Hver gang du kører en kommando og tilføjer outputtet til en fil, vil det skrive det nye standardoutput til slutningen af ​​den eksisterende fil.

Omdiriger standardfejl til en fil(Redirect Standard Error To a File)

På samme måde som du kan omdirigere standard output-skrivninger til en fil, kan du også outputte standardfejlstrømmen til en fil.

For at gøre dette skal du tilføje 2> til slutningen af ​​kommandoen efterfulgt af outputfejlfilen, du vil oprette.

I dette eksempel skal du skrive kommandoen: 

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

Dette sender standardoutputstrømmen til myoutput.txt, og standardfejlstrømmen til output.err. Resultatet er, at ingen output-stream overhovedet bliver vist i konsolvinduet.

Du kan dog se fejlmeddelelserne ved at skrive output.err . Dette åbner filen i din standardtekstfilfremviser.

Som du kan se, sendes eventuelle fejlmeddelelser fra kommandoen til fejlfilen. Ligesom(Just) med standard output, kan du bruge >> i stedet for at tilføje fejlen til fejl fra tidligere kørte kommandoer.

Omdiriger alle output-skrivninger til en samme fil(Redirect All Output Writes to a Same File)

Alle fremgangsmåderne ovenfor resulterer i flere filer. Den ene fil er til standardoutputstrømmen, og den anden er til standardfejlstrømmen.

Hvis du vil inkludere begge disse output til den samme fil, kan du også gøre det. For at gøre dette skal du bare omdirigere alt output til den samme fil ved hjælp af følgende kommando.

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

Sådan fungerer denne kommando:

  • Standardoutputtet dirigeres til outputfilen identificeret ved outputnummer 1.
  • Standardfejloutput identificeret med nummer 2 omdirigeres til outputfilen identificeret med nummer 1.

Dette vil tilføje fejloutput til slutningen af ​​standardoutput.

Dette er en nyttig måde at se alt output for enhver kommando i én fil. 

Lydløs standard- eller fejloutputstrømme(Silencing Standard or Error Output Streams)

Du kan også slå enten Standard Output eller Standard Error fra ved at omdirigere outputtet til en NUL i stedet for en fil.

Ved at bruge eksemplet ovenfor, hvis du kun vil have standardoutput og slet ingen standardfejl(Standard Error) , kan du bruge følgende kommando:

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

Dette vil resultere i den samme outputfil som det første eksempel ovenfor, hvor du kun omdirigerede standardoutputtet(Standard Output) , men med denne kommando vil fejlen ikke ekko inde i konsollen. Det vil heller ikke oprette en fejllogfil.

Dette er nyttigt, hvis du er ligeglad med eventuelle fejl og ikke ønsker, at de skal blive til gene.

Du kan udføre enhver af de samme output-kommandoer ovenfor inde fra en BAT-fil,(inside a BAT file) og outputtet fra den linje vil gå til den outputfil, du angiver. Dette er en nyttig måde at se, om nogen kommandoer i en BAT -fil havde nogen fejl, da de forsøgte at køre.



About the author

audiofil ingeniør og audio produktspecialist med mere end 10 års erfaring. Jeg har specialiseret mig i at skabe kvalitets musikhøjttalere og høretelefoner fra start til slut. Jeg er ekspert i fejlfinding af lydproblemer samt design af nye højttalere og hovedtelefonsystemer. Min erfaring rækker ud over blot at lave gode produkter; Jeg har også en passion for at hjælpe andre til at være deres bedst mulige jeg, uanset om det er gennem uddannelse eller samfundstjeneste.



Related posts