XP의 배치파일에서 리디렉션

MoTSF의 이미지

안녕하세요!

최근 프로그램 개발중에 생긴 의문에 대해 질문드립니다.

외부에서 배치빌드 스크립트를 받아 컴파일하는데,

해당 배치파일을 실행하면 로그가 남지 않아서 단순하게 로그를 남기는 스크립트를 작성했습니다.

그런데 로깅도중에 실행하는 배치파일 내부에 pause명령이 있으면 해당 문구가 파일에 로깅되고,

화면에는 출력되지 않더라구요... 드는 의문이 화면에도 뿌리고 파일에도 로깅하면 되겠다는 생각을 했는데

쉽지 않더라구요... xp 프롬프트에서, 실행되는 명령을 화면과 파일에 동시에 표시하는 방법 없을까요???

제가 만든 파일은 log.bat.
아래의 명령을 넣었습니다.

call build.bat build >> clean.log 1>&2

위의 명령을 이용해 build.bat라는 배치 파일을 실행하고,
실행도중 출력되는 내용과 에러의 내용을 clean.log파일에 저장합니다.

하지만... 위 방법을 이용하면 build.bat 파일에 pause가 들어갈 경우 그냥 무한 대기하게되죠..;;

이럴때 실행하는 내용을 화면에도 출력하면서 텍스트 파일에 쓸수 있으면 좋겠다는 생각을 했는데...

이런 방법 어디 없나요 T^T

오랫만에 DOS 쓰려니... 익숙치 않습니다...;;

addnull의 이미지

음.. 단순히 pause라면 엔터키 한번 살짝 눌러주시면 될텐데요.

예를 들어 run.bat 내용에

echo test0
pause
echo test1

한 후에 터미널에서

call run.bat > run.log

하시고, 엔터키 한번 더 눌러주시면, 로그가 잘 기록되어있을 겁니다.

그리고 예전에 배치 파일로 나이트 빌드 만들어본 적이 있는데, 어렴풋한 기억으론 이런 류의 문제 때문에
배치 파일을 실행시키는 배치 파일을 만들었던 것 같습니다... =)
배치 파일에서 배치 파일을 실행시킬려면 call 이 아니라 start를 써보세요.

MoTSF의 이미지

답변 감사합니다~! 근데, 위에 적어드렸다시피...

제 파일 내용에서 로그를 생성하는건 문제가 없습니다.다만...

> run.log로 로깅하면 로그의 내용은 화면에 출력이 안된다는거죠.

제가 원하는건 화면에도 출력되고 파일에도 로깅하는거라서요... T^T

start의 경우는 커맨드 프롬프트를 하나 새로 여는것에 불과하구요

call 명령은 배치 파일 내에서 다른 배치파일을 부를때 사용하는 명령입니다.

따라서 call 과 start의 사용은 차이가 없게 됩니다....

제목에 적었다시피 리디렉션이 문제예요 T^T

동시에 두군데로 리디렉션 하는 방법을 아시는 분 T^T 답변좀 T^T

M.W.Park의 이미지

다른 터미널에서 tail -f run.log

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

bushi의 이미지

tail 이 있다면 tee 가 있기를 기대해봐도 ?

Coreutils 전체를 win32 로 포팅한 것이 sourceforge.net 에 있더군요.

OTL

MoTSF의 이미지

tail이면... 리눅스 툴중 하나였죠..?

역시 다른 툴을 써야 하는건가요?

tee는 win32용 있는거 같던데.. 알아봐야겠네요 T^T

답변 감사합니다~!

Prentice의 이미지

tail도 좋지만, less 쓰시면 less +F growing_file.log 로도 가능합니다. 앞으로 넘겨서 볼 수도 있고 검색도 되고요.

아니면 less로 파일을 부르신 후 대문자 F를 누르셔도 같은 효과를 보실 수 있습니다.

http://www.greenwoodsoftware.com/less/download.html