Work

Command Line / Batch Tips

종종 편의를 위해 Windows Batch를 생성해서 쓰는데,
매번 다시 검색해서 찾아보기 귀찮아서 정리해둔다.

빈 파일 생성

type NUL > [파일]

이를테면 특정 배치 실행시의 로그 파일을 생성할 경우, 아래 구문으로 파일 생성 및 열기를 할 수 있다.
윈도우 연결 프로그램으로 .log 에 baretail 같은 텍스트 뷰어를 연결해두면 편리하다.
ex) 날짜+시간을 파일명으로 가진 로그 파일 생성 및 열기

set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%
set HOUR=%time:~0,2%
set MINUTE=%time:~3,2%
set SECOND=%time:~6,2%
set LOG_FILE=%~dp0build_log\%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%%SECOND%_sync.log
type NUL > %LOG_FILE%
start %LOG_FILE%

표준입출력 에러까지 파일로 출력

[명령] 1>[파일] 2>&1

표준오류스트림(STDERR)을 표준출력스트림(STDOUT)으로 리다이렉션하고(2>&1),
표준출력을 파일로 로깅(1>test.log)한다.
그렇지 않으면 아래처럼 에러메시지는 파일에 로깅되지 않는다. (no_exist.txt가 없는 경우로 가정)

F:\>dir no_exist.txt > test.log
파일을 찾을 수 없습니다.

콘솔과 파일에 동시 출력

CoreUtils(http://gnuwin32.sourceforge.net/packages/coreutils.htm) Tee를 활용한다.

[명령] | tee [파일]

에러까지 한번에 출력+로깅하려면 아래처럼 응용한다.

[명령] 2>&1 | tee [파일]

ex) 아래 dir 실행결과와 동일하게 test.log에 기록된다. (no_exist.txt가 없는 경우로 가정)

F:\>dir no_exist.txt 2>&1 | tee test.log
 F 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: XXXX-XXXX

 F:\ 디렉터리

파일을 찾을 수 없습니다.