Windows : 출력을 보면서 텍스트 파일로 명령 줄 리디렉션


30

Windows에서 C 프로그램을 작성하고 있는데 printf가 print를 명령 행으로 호출하고 다음을 사용하여이 모든 출력을 텍스트 파일로 리디렉션 할 수 있음을 알고 있습니다.

myProgram.exe > mylog.txt

그러나 콘솔에 인쇄 된 출력을보고 텍스트 파일에 모든 로그를 기록하고 싶습니다.

이것을 할 수있는 방법이 있습니까? 로그 파일을 모니터링하기 위해 tail을 사용하려고 생각했습니다.


내가 한 일은 때로는 다른 cmd 프롬프트 창을 열고 mylog.txt 유형을 반복적으로 실행하거나 메모장 mylog.txt를 수행하여 개발 방법을 확인하는 것입니다. 티는 그래도 좋은 것 같습니다.
barlop


답변:


19

Windows PowerShell 에는이를 수행 할 수 tee있는 유닉스 도구의 이름을 딴 도구가 있습니다 .

또는 teeWindows 용 유닉스 포트가 있습니다 :


3
powershell은 훌륭한 팁입니다 .cmd는 아직 움직이지 않은 사람들을위한 것일 수 있습니다! unnuutils를 사용하는 것보다 gnuwin32를 사용하는 것이 낫습니다. gnuwin32는 더 새롭고 아마도 unxutils의 모든 것을 가지고 있으며 더 많은 유틸리티를 가지고 있습니다. 다른 곳에서 언급 한 바와 같이, gnuwin32로 coreutils 티가
barlop

다른 타사 명령 줄 유틸리티 인 CMDer에서도 동일하게 작동합니다.
Rauni

1
이 답변에서 superuser.com/a/273112/213743 BaconBits는 PowerShell 가 줄 중심임을 나타냅니다. 줄 끝 문자에 도달 할 때까지 줄 바꿈 문자가 나타날 때까지 줄을 출력하지 않습니다. 베이컨 비트는 유닉스 티가 항상 콘텐츠를 즉시 전달할 것을 제안합니다 .
buzz3791

8

Windows에서 내가 생각할 수있는 것은 이것을하는 것입니다.

myProgram.exe > mylog.txt & type mylog.txt

이것은 귀하의 질문에 명령 예제를 기반으로 - 사실 당신이에 출력 추가하고 싶다면 mylog.txt다음 사용할 것 >>대신을 >하지만 type추가되었다 아니라 무엇을, 전체 로그 파일을 인쇄합니다.

GnuWin32 CoreUtils 를 다운로드하면 Unix 메소드 ( tee명령)를 사용하여 이를 수행 할 수 있습니다 .

myProgram.exe | tee mylog.txt

그러면 myProgram.exe의 출력이 기록 mylog.txt되지만 동시에 콘솔에도 표시됩니다. 추가 mylog.txt만하려는 경우 -a매개 변수를 tee에 전달할 수 있습니다 .


2
티 솔루션이 훨씬 좋아 보입니다. 당신이 언급하는 다른 것은 동시성이 아닙니다.
barlop

1
@ barlop-첫 번째 솔루션은 Windows에서 기본적으로 할 수 없기 때문에 약간의 해결 방법이라는 데 동의합니다. 티는 트릭을 훌륭하게 수행합니다 :)
Gaff

도와 주셔서 감사합니다. 티와 함께 ​​갔지만 lesmana는 티를 언급했을 때 몇 분 일찍 도착했습니다. :)
user79397

'type'을 생략하면 작업이 완료 될 때 기본 편집기 (메모장)에서 파일이 열립니다.
Josh Stribling


0

방금 OP가 제안한대로 비슷한 요구가 있었고 Tail을 사용했습니다.

>C:\Temp\Commands_Log.txt (
START tail.exe -f C:\Temp\Commands_Log.txt

Some_Commands
Other_Commands

echo.
echo ALL DONE HERE!
echo.
echo IT IS NOW SAFE TO CLOSE THIS WINDOW!
)

"> C : \ Temp \ Commands_Log.txt"는 로그 파일을 작성하고 (괄호) 안에있는 모든 명령의 출력을 추가합니다.

괄호 안의 첫 번째 명령은 Tail을 시작하는 것이며 새 명령 창에서 열립니다.

마지막으로 반향은 익숙하지 않은 사용자가 모든 것이 완료되면 알려줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.