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

Der er dog et par forskellige måder, du kan omdirigere kommandoelinjens skrivninger til en fil. Den mulighed, du vælger, afhænger af, hvordan du ønsker at se dit kommando output.

Sådan fungerer Windows Kommandoprompt output

Når du skriver en kommando i Windows-konsollen (kommandoprompten), sendes output fra den pågældende kommando til to separate strømme.

  • STDOUT: Standard Out er det sted, hvor alle standardsvar fra kommandoer går hen. F.eks. er standardsvaret for kommandoen DIR en liste over filer i en mappe.
  • STDERR: Standardfejl er det sted, hvor eventuelle fejlmeddelelser sendes hen, hvis der er et problem med kommandoen. Hvis der f.eks. ikke er nogen filer i mappen, vil DIR-kommandoen udsende “File Not Found” til standardfejlstrømmen.

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

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 kommandoens output write til en ny fil, hver gang du kører kommandoen.

Det gør du ved at åbne kommandoprompten og skrive:

dir test.exe > myoutput.txt

Tegnet > fortæller konsollen, at den skal sende output STDOUT til filen med det navn, du har angivet.

Når du kører denne kommando, vil du bemærke, at der ikke er noget svar i kommandovinduet ud over fejlen om, at filen ikke findes.

Det skyldes, at standardudgangen for kommandoen blev omdirigeret til en fil ved navn myoutput.txt. Filen findes nu i den samme mappe som den, hvor du kørte kommandoen. Standardfejludgangen vises stadig som normalt.

Bemærk: Vær omhyggelig med at ændre den aktive mappe for kommandoprompten, inden du kører kommandoen. På den måde ved du, hvor outputfilerne er gemt.

Du kan få vist den standardudgang, der gik til filen, ved at skrive “myoutput.txt” i kommandovinduet. Dette vil åbne tekstfilen i din standard tekstfilfremviser. For de fleste mennesker er dette normalt Notepad.exe.

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

Redirect Standard Output Writes to the Same File

Hvad hvis du ikke ønsker at overskrive den samme fil? En anden mulighed er at bruge >> i stedet for > til at omdirigere til en uddatafil. I dette eksempel ville du skrive:

dir test.exe >> myoutput.txt

Du vil se det samme output (kun fejlen).

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

Hver gang du kører en kommando og tilføjer output til en fil, skriver den det nye standardoutput til slutningen af den eksisterende fil.

Redirect Standard Error To a File

På samme måde, som du kan omdirigere standard output skriver til en fil, kan du også output standard error stream til en fil.

For at gøre dette skal du tilføje 2> til slutningen af kommandoen, efterfulgt af den output error-fil, du vil oprette.

I dette eksempel skriver du 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 der slet ikke vises nogen outputstream i konsolvinduet.

Derimod kan du se fejlmeddelelserne ved at skrive output.err. Dette vil åbne filen i din standard tekstfilfremviser.

Som du kan se, bliver alle fejlmeddelelser fra kommandoen udsendt til fejlfilen. Ligesom med standardudgangen kan du i stedet bruge >> til at føje fejlen til fejl fra tidligere kørte kommandoer.

Omdiriger alle udskriftsskrivninger til samme fil

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

Hvis du ønsker at inkludere begge disse output til den samme fil, kan du også gøre det. For at gøre dette skal du blot omdirigere alle 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 omdirigeres til den outputfil, der er identificeret med outputnummer 1.
  • Standardfejludgangen identificeret ved nummer 2 omdirigeres til den uddatafil, der er identificeret ved nummer 1.

Dette vil tilføje fejludgangen til slutningen af standardudgangen.

Dette er en nyttig måde at se al uddata for en hvilken som helst kommando i én fil.

Stille standard- eller fejloutputstrømme

Du kan også slå enten standardoutput eller standardfejl fra ved at omdirigere output til et NUL i stedet for til en fil.

Med udgangspunkt i eksemplet ovenfor, hvis du kun ønsker Standard Output og slet ikke Standard Error, kan du bruge følgende kommando:

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

Dette vil resultere i den samme outputfil som i det første eksempel ovenfor, hvor du kun omdirigerede Standard Output, men med denne kommando vil fejlen ikke ekko inde i konsollen. Den 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 en hvilken som helst af de samme outputkommandoer ovenfor inde fra en BAT-fil, og output 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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.