Преусмери излаз са командне линије оперативног система Виндовс у текстуалну датотеку

Један од најкориснијих начина за евидентирање и решавање проблема са понашањем команди или групних послова које покрећете на Виндовс(Windows) - у је преусмеравање излаза на датотеку.

Међутим, постоји неколико различитих начина на које можете да преусмерите записе командне линије у датотеку. Опција коју изаберете зависи од тога како желите да видите излаз команде.

Како функционише излаз Виндовс командне линије(How Windows Command Prompt Output Works)

Када унесете команду у Виндовс(Windows) конзолу ( командна линија(command prompt) ), излаз из те команде иде у два одвојена тока.

  • СТДОУТ(STDOUT) : Стандардни излаз(Out) је место где иду сви стандардни одговори из команди. На пример, стандардни одговор за команду ДИР(DIR) је листа датотека унутар директоријума.
  • СТДЕРР(STDERR) : Стандардна грешка(Standard Error) је где иду све поруке о грешци ако постоји проблем са командом. На пример, ако у директоријуму нема ниједне датотеке, ДИР(DIR) команда ће извести „ Датотека(File) није пронађена“ у ток Стандардне грешке .(Standard Error)

Можете да преусмерите излаз на датотеку у Виндовс(Windows) -у за оба ова излазна тока.

Преусмери стандардни излаз за писање у нову датотеку(Redirect Standard Output Write to New File)

Постоје два начина на која можете преусмерити стандардни излаз команде у датотеку. Први је да пошаљете излаз команде за писање у нову датотеку сваки пут када покренете команду.

Да бисте то урадили, отворите командну линију и откуцајте:

dir test.exe > myoutput.txt

Знак > говори конзоли да испише СТДОУТ(STDOUT) у датотеку са именом које сте дали.

Када покренете ову команду(run this command) , приметићете да у командном прозору нема одговора осим грешке да датотека не постоји.

То је зато што је стандардни излаз за команду преусмерен на датотеку под називом миоутпут.ткт. Датотека сада постоји у истом директоријуму где сте покренули команду. Стандардни излаз грешке се и даље приказује као и обично.

Напомена(Note) : Пазите да промените активни директоријум(change the active directory) за командну линију пре него што покренете команду. На овај начин ћете знати где се чувају излазне датотеке.

Можете да видите стандардни излаз који је отишао у датотеку тако што ћете у командни прозор укуцати „миоутпут.ткт“. Ово ће отворити текстуалну датотеку у вашем подразумеваном прегледнику текстуалних датотека. За већину људи ово је обично Нотепад.еке(Notepad.exe) .

Следећи пут када покренете исту команду, претходна излазна датотека ће бити избрисана. Нова излазна датотека ће бити поново креирана са излазом последње команде.

Преусмери стандардне излазне(Standard Output) записе у исту датотеку(Same File)

Шта ако не желите да препишете исту датотеку? Друга опција је да користите >> уместо > за преусмеравање на излазну датотеку. У случају овог примера, откуцали бисте:

dir test.exe >> myoutput.txt

Видећете исти излаз (само грешка).

Али у овом случају, уместо да препише излазну датотеку, ова команда додаје нови излаз постојећој излазној датотеци.

Сваки пут када покренете команду и додате излаз у датотеку, она ће написати нови стандардни излаз на крај постојеће датотеке.

Преусмери стандардну грешку у датотеку(Redirect Standard Error To a File)

На исти начин на који можете да преусмерите стандардне излазне записе у датотеку, такође можете да пошаљете стандардни ток грешака у датотеку.

Да бисте то урадили, мораћете да додате 2> на крај команде, након чега следи излазна датотека грешке коју желите да креирате.

У овом примеру, укуцаћете наредбу: 

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

Ово шаље стандардни излазни ток у миоутпут.ткт, а стандардни ток грешака у оутпут.ерр. Резултат је да се никакав излазни ток уопште не приказује у прозору конзоле.

Међутим, можете видети поруке о грешци ако унесете оутпут.ерр(output.err) . Ово ће отворити датотеку у подразумеваном прегледнику текстуалних датотека.

Као што видите, све поруке о грешци из команде излазе у датотеку грешке. Као(Just) и код стандардног излаза, уместо тога можете користити >> да додате грешку грешкама из претходно покренутих команди.

Преусмери све излазне записе у исту датотеку(Redirect All Output Writes to a Same File)

Сви горе наведени приступи резултирају у више датотека. Једна датотека је за стандардни излазни ток, а друга за стандардни ток грешака.

Ако желите да укључите оба ова излаза у исту датотеку, можете и то да урадите. Да бисте то урадили, само треба да преусмерите сав излаз у исту датотеку користећи следећу команду.

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

Ево како ова команда функционише:

  • Стандардни излаз је усмерен на излазну датотеку идентификовану излазним бројем 1.
  • Стандардни излаз грешке идентификован бројем 2 се преусмерава на излазну датотеку идентификовану бројем 1.

Ово ће додати излаз грешке на крај стандардног излаза.

Ово је користан начин да видите сав излаз за било коју команду у једној датотеци. 

Утишавање стандардних излазних токова или токова грешака(Silencing Standard or Error Output Streams)

Такође можете да искључите стандардни излаз(Standard Output) или стандардну грешку(Standard Error) тако што ћете преусмерити излаз на НУЛ(NUL) уместо на датотеку.

Користећи горњи пример, ако желите само стандардни излаз(Standard Output) и уопште немате стандардну грешку(Standard Error) , можете користити следећу команду:

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

Ово ће резултирати истом излазном датотеком као у првом примеру изнад где сте преусмерили само стандардни излаз(Standard Output) , али са овом командом грешка се неће одјекнути унутар конзоле. Такође неће креирати датотеку евиденције грешака.

Ово је корисно ако вам није стало до грешака и не желите да вам оне сметају.

Можете извршити било коју од истих излазних команди изнад из БАТ датотеке(inside a BAT file) и излаз из те линије ће ићи у излазну датотеку коју наведете. Ово је користан начин да видите да ли је било која команда унутар БАТ(BAT) датотеке имала грешку када је покушала да се покрене.



About the author

Ја сам веб програмер са искуством у Фирефок-у и Гоогле документима. Дипломирао сам пословну администрацију на Универзитету Флорида. Моје вештине укључују: развој веб сајта, систем за управљање садржајем (ЦМС), анализу података и дизајн корисничког интерфејса. Ја сам искусан консултант који може помоћи вашем тиму да изгради ефикасне веб странице и апликације.



Related posts