도스 배치에서 실행결과를 파일로 리다이렉션 하기 (with start, cmd)

스케줄러로 도스 배치파일로 특정 작업을 시킬 때 기존에는 start /b로 작업을 시켰다.

문제상황

기존에 쓰던 명령어는 다음과 같았다.

start /b “작업별칭” myjob.bat 인자1 인자2 > y:\작업로그.log

의미 : myjob.bat이라는 배치파일을 실행시켜서 그 결과를 y드라이브의 작업로그.log에 저장시켜라.
(참고로 >는 파일을 덮어쓰면서 새로 저장하고 >>는 기존 파일의 내용 끝에 로그를 추가한다)

그런데 start /b를 하면 /b 옵션 설정으로 인해 별도의 창을 열지 않고 작업을 시키므로 해당 배치파일(myjob.bat말고 start가 들어있는 배치파일)이 종료되지 않아 재실행을 시킬 때 문제가 발생했다.

왜냐하면 내 경우 최초 실행시 작업스케줄러를 통해 실행을 시켰기 때문에 백그라운드에 계속 떠 있어 프로세스를 찾아 강제로 종료한 후 다시 시작을 시켜야 했다.
그래서 원래 start명령의 의도대로 /b를 빼고 별도의 창을 열어 실행하고 종료되도록 변경했더니 이번엔 로그가 리다이렉션이 안되는 문제가 발생했다.

해결방법

명령어를 다음과 같이 수정하여 해결하였다.

start cmd /c myjob.bat 인자1 인자2 > y:\작업로그.log

위와 같이 하면 실행시킨 배치파일은 바로 종료되고 myjob.bat의 로그도 정상적으로 리다이렉션 된다. 굿!

혹시 배치파일에서 call과 start의 차이에 대해 궁금하신 분은 다음 게시물을 참조바란다.

참고자료

생계형 특급 개발자이자 아들 하나 있는 평범한 아빠. 취미는 요리, 캠핑, 뮤직 페스티발 다니기 등이지만 이 블로그에는 주로 개발관련된 내용만 올릴 예정입니다. 워드프레스를 시작한지 얼마 되지않아 사이트가 허전하지만 좋은 내용으로 채우도록 노력하겠습니다. 자주 놀러오세요 ^^
Posts created 54

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top