Windows 명령줄에서 텍스트 파일로 출력 리디렉션

Windows 에서 실행하는 명령 또는 일괄 작업의 동작을 기록하고 문제를 해결하는 가장 유용한 방법 중 하나는 출력을 파일로 리디렉션하는 것입니다.

그러나 명령줄 쓰기를 파일로 리디렉션할 수 있는 몇 가지 다른 방법이 있습니다. 선택하는 옵션은 명령 출력을 보는 방법에 따라 다릅니다.

Windows 명령 프롬프트 출력 작동 방식(How Windows Command Prompt Output Works)

Windows 콘솔( 명령 프롬프트(command prompt) )에 명령을 입력하면 해당 명령의 출력이 두 개의 별도 스트림으로 이동합니다.

  • STDOUT : 표준 출력(Out) 은 명령의 표준 응답이 가는 곳입니다. 예를 들어, DIR 명령에 대한 표준 응답은 디렉토리 내의 파일 목록입니다.
  • STDERR : 표준 오류(Standard Error) 는 명령에 문제가 있는 경우 오류 메시지가 표시되는 위치입니다. 예를 들어 디렉토리에 파일이 없는 경우 DIR 명령은 표준 오류(Standard Error) 스트림 에 " 파일(File) 을 찾을 수 없음"을 출력합니다.

이러한 출력 스트림 모두에 대해 출력 을 Windows 의 파일로 리디렉션할 수 있습니다 .

표준 출력 쓰기를 새 파일로 리디렉션(Redirect Standard Output Write to New File)

명령의 표준 출력을 파일로 리디렉션하는 방법에는 두 가지가 있습니다. 첫 번째는 명령을 실행할 때마다 명령 출력 쓰기를 새 파일로 보내는 것입니다.

이렇게 하려면 명령 프롬프트를 열고 다음을 입력합니다.

dir test.exe > myoutput.txt

> 문자는 콘솔에 제공한 이름의 파일에 STDOUT 을 출력하도록 지시합니다.(STDOUT)

이 명령(run this command) 을 실행 하면 파일이 존재하지 않는다는 오류를 제외하고 명령 창에 응답이 없음을 알 수 있습니다.

이는 명령에 대한 표준 출력이 myoutput.txt라는 파일로 리디렉션되었기 때문입니다. 이제 파일은 명령을 실행한 동일한 디렉토리에 있습니다. 표준 오류 출력은 여전히 ​​정상적으로 표시됩니다.

참고(Note) : 명령을 실행하기 전에 명령 프롬프트 의 활성 디렉토리를 변경하도록 주의하십시오. (change the active directory)이렇게 하면 출력 파일이 저장된 위치를 알 수 있습니다.

명령 창에 "myoutput.txt"를 입력하여 파일로 이동한 표준 출력을 볼 수 있습니다. 그러면 기본 텍스트 파일 뷰어에서 텍스트 파일이 열립니다. 대부분의 사람들에게 이것은 일반적으로 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

이것은 표준 출력 스트림을 myoutput.txt로 보내고 표준 오류 스트림을 output.err로 보냅니다. 결과는 콘솔 창에 출력 스트림이 전혀 표시되지 않는다는 것입니다.

그러나 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)

출력을 파일 대신 NUL 로 리디렉션하여 표준 출력(Standard Output) 또는 표준 오류(Standard Error) 를 끌 수도 있습니다 .

위의 예를 사용하여 표준 출력(Standard Output) 만 원하고 표준 오류(Standard Error) 가 전혀 필요하지 않은 경우 다음 명령을 사용할 수 있습니다.

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

이렇게 하면 표준 출력(Standard Output) 만 리디렉션한 위의 첫 번째 예제와 동일한 출력 파일이 생성 되지만 이 명령을 사용하면 콘솔 내부에 오류가 에코되지 않습니다. 오류 로그 파일도 생성하지 않습니다.

이것은 오류에 대해 신경쓰지 않고 성가신 것이 되기를 원하지 않는 경우에 유용합니다.

BAT 파일 내부에서(inside a BAT file) 위의 동일한 출력 명령을 수행할 수 있으며 해당 행의 출력은 지정한 출력 파일로 이동합니다. 이것은 BAT(BAT) 파일 내의 명령 이 실행을 시도할 때 오류가 있었는지 여부를 확인하는 유용한 방법입니다.



About the author

안녕! 제 이름은 하드웨어 해커입니다. 저는 10년 이상의 컴퓨터 수리 및 개조 경험이 있습니다. 노트북에서 태블릿, 스마트 TV에 이르기까지 거의 모든 것을 고칠 수 있습니다. 내 기술을 통해 고객이 문제를 빠르고 효율적으로 해결하도록 도울 수 있습니다. 내 블로그는 사람들이 올바른 도구를 사용하여 컴퓨터와 가전제품을 수리하는 방법을 배울 수 있도록 돕는 데 전념하고 있습니다. 그리고 내 Facebook 페이지는 컴퓨터와 관련된 모든 것에 대한 팁, 트릭 및 통찰력을 공유하는 곳입니다!



Related posts