A Windows rendszerben futtatott parancsok vagy kötegelt munkák viselkedésének naplózására és hibaelhárítására az egyik leghasznosabb módszer a kimenet átirányítása egy fájlba.

A parancssori írást azonban többféleképpen is átirányíthatja egy fájlba. A választott lehetőség attól függ, hogyan szeretné a parancsok kimenetét megjeleníteni.

Hogyan működik a Windows parancssor kimenete

Amikor a Windows konzolon (parancssor) beír egy parancsot, a parancs kimenete két külön folyamba kerül.

  • STDOUT: Standard Out: A parancsok szabványos válaszai ide kerülnek. Például a DIR parancs szabványos válasza a könyvtáron belüli fájlok listája.
  • STDERR: A szabványos hibaüzenetek oda kerülnek, ha a paranccsal probléma adódik. Ha például nincsenek fájlok a könyvtárban, a DIR parancs a “File Not Found” (Fájl nem található) üzenetet adja ki a Standard Error folyamba.

A Windowsban mindkét kimeneti folyam esetében átirányíthatja a kimenetet egy fájlba.

Redirect Standard Output Write to New File

A parancs standard kimenetét kétféleképpen irányíthatja át egy fájlba. Az első az, hogy a parancs kimeneti írását egy új fájlba küldjük minden alkalommal, amikor a parancsot futtatjuk.

Ehhez nyissuk meg a parancssort, és írjuk be:

dir test.exe > myoutput.txt

A > karakter utasítja a konzolt, hogy az STDOUT kimenetet a megadott nevű fájlba adja ki.

A parancs futtatásakor észre fogja venni, hogy a parancsablakban nem jelenik meg semmilyen válasz, kivéve azt a hibát, hogy a fájl nem létezik.

Ez azért van, mert a parancs standard kimenete a myoutput.txt nevű fájlba lett átirányítva. A fájl most ugyanabban a könyvtárban létezik, ahol a parancsot futtatta. A standard hibakimenet továbbra is a szokásos módon jelenik meg.

Figyeljen arra, hogy a parancs futtatása előtt változtassa meg a parancssor aktív könyvtárát. Így tudni fogja, hogy a kimeneti fájlok hol tárolódnak.

A parancsablakban a “myoutput.txt” beírásával megtekintheti a szabványos kimenetet, amely a fájlba került. Ez megnyitja a szöveges fájlt az alapértelmezett szöveges fájlnézőben. A legtöbb ember számára ez általában a Notepad.exe.

A következő alkalommal, amikor ugyanazt a parancsot futtatja, az előző kimeneti fájl törlődik. Egy új kimeneti fájl jön létre újra a legutóbbi parancs kimenetével.

A standard kimenet átirányítása ugyanabba a fájlba ír

Mi van, ha nem akarja ugyanazt a fájlt felülírni? Egy másik lehetőség, hogy >> helyett >-t használunk a kimeneti fájlba való átirányításhoz. Ennek a példának az esetében a következőt írná be:

dir test.exe >> myoutput.txt

Az eredmény ugyanaz lesz (csak a hiba).

De ebben az esetben a kimeneti fájl felülírása helyett ez a parancs az új kimenetet a meglévő kimeneti fájlhoz csatolja.

Minden alkalommal, amikor egy parancsot futtat, és a kimenetet egy fájlhoz csatolja, az új szabványos kimenetet a meglévő fájl végére írja.

Szabványos hiba átirányítása egy fájlba

Ahogyan a szabványos kimeneti írásokat is átirányíthatja egy fájlba, a szabványos hibafolyamot is kiadhatja egy fájlba.

Ezhez a parancs végéhez a 2> parancsot kell hozzátennie, majd a létrehozni kívánt kimeneti hibafájlt.

Ebben a példában a parancsot írja be:

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

Ez a standard kimeneti folyamot a myoutput.txt, a standard hiba folyamot pedig az output.err fájlba küldi. Az eredmény az, hogy a konzolablakban egyáltalán nem jelenik meg kimeneti folyam.

A hibaüzeneteket azonban az output.err beírásával láthatja. Ez megnyitja a fájlt az alapértelmezett szöveges fájlnézőben.

Mint láthatja, a parancsból származó hibaüzenetek a hibafájlba kerülnek. A standard kimenethez hasonlóan a >> helyett használhatja a >>-t, hogy a hibát a korábban futtatott parancsok hibáihoz csatolja.

Minden kimeneti írást ugyanabba a fájlba irányít

A fenti megközelítések mindegyike több fájlt eredményez. Az egyik fájl a szabványos kimeneti folyam, a másik pedig a szabványos hiba folyam.

Ha mindkét kimenetet ugyanabba a fájlba szeretnénk felvenni, azt is megtehetjük. Ehhez csak át kell irányítania az összes kimenetet ugyanabba a fájlba a következő parancs segítségével.

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

Íme, hogyan működik ez a parancs:

  • A standard kimenet az 1-es kimeneti számmal azonosított kimeneti fájlba kerül.
  • A 2-es számmal azonosított standard hibakimenet az 1-es számmal azonosított kimeneti fájlba kerül átirányításra.

Ez a hibakimenetet a standard kimenet végéhez csatolja.

Ez egy hasznos módja annak, hogy bármely parancs összes kimenetét egy fájlban láthassa.

Szokásos vagy hiba kimeneti folyamok elnémítása

A szabványos kimenetet vagy a szabványos hibát úgy is kikapcsolhatja, hogy a kimenetet egy fájl helyett egy NUL-ba irányítja át.

A fenti példát használva, ha csak a Standard Outputot szeretné, a Standard Error-t pedig egyáltalán nem, akkor a következő parancsot használhatja:

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

Ez ugyanazt a kimeneti fájlt fogja eredményezni, mint a fenti első példa, ahol csak a Standard Outputot irányította át, de ezzel a paranccsal a hiba nem fog visszhangozni a konzolon belül. Hibanaplófájlt sem hoz létre.

Ez akkor hasznos, ha nem törődik a hibákkal, és nem akarja, hogy zavaróvá váljanak.

A fenti kimeneti parancsok bármelyikét elvégezheti egy BAT-fájlon belülről, és az adott sor kimenete az Ön által megadott kimeneti fájlba kerül. Ez egy hasznos módja annak, hogy lássuk, hogy a BAT fájlon belül bármelyik parancsnak volt-e hibája, amikor megpróbálták lefuttatni.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.