이 글에서는 DOS용 배치 프로그램에서 log파일(20211221_113259_error.log) 등을 출력할 때 파일 명의 선두에 붙여서 사용하기 위해yyyymmdd_hhmiss형식의 숫자를 취득하는 방법을 소개합니다.
%date% 특수 환경 변수
다음 명령으로 출력하는 년/월/일 (예 2021/12/21)에서 위치에 대응하는 값의 관계는 다음과 같습니다.
C:\>echo %date%
2021/12/21
위치 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
값 | 2 | 0 | 2 | 1 | / | 1 | 2 | / | 2 | 1 |
%date% 출력 값을 기준으로 지정 위치에서 지정 자릿수 만큼의 년, 월 , 일을 취득하는 명령은 다음과 같습니다.
명령 | 설명 | 결과 |
---|---|---|
echo %date:~0,4% | 위치 0부터 4 자리 (년) | 2021 |
echo %date:~5,2% | 위치 5부터 2 자리 (월) | 12 |
echo %date:~8,2% | 위치 8부터 2 자리 (일) | 21 |
%time% 특수 환경 변수
다음 명령으로 출력하는 시:분:초 (예 22:32:57)에서 위치에 대응하는 값의 관계는 다음과 같습니다.
C:\>echo %time%
22:32:57.35
위치 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|---|
값 | 2 | 3 | : | 3 | 2 | : | 5 | 7 | . | 3 | 5 |
%time% 출력 값을 기준으로 지정 위치에서 지정 자릿수 만큼의 시, 분 , 초를 취득하는 명령은 다음과 같습니다.
명령 | 설명 | 결과 |
---|---|---|
echo %time:~0,2% | 위치 0부터 2 자리 | 22 |
echo %time:~3,2% | 위치 3부터 2 자리 | 32 |
echo %time:~6,2% | 위치 6부터 2 자리 | 57 |
yyyymmdd_hhmiss포맷으로 출력하기
%time% 출력 값의 시간 영역은 0시부터 9시까지 한 자릿수로 출력 됩니다. 이를 염두에 두고 다음과 같이 10시 이전 출력(예: if %CUR_HH% lss 10)에 대해서는 앞에 0을 붙여서 (예: 0%time:~1,1% )두 자릿수를 만들어 출력합니다.
C:\>echo %date%
2021/12/21
C:\>echo %time%
0:58:33.65
C:\>set CUR_HH=%time:~0,2%
C:\>if %CUR_HH% lss 10 (set CUR_HH=0%time:~1,1%)
C:\>echo %CUR_HH%%time:~3,2%%time:~6,2%
005833
C:\>echo %date:~0,4%%date:~5,2%%date:~8,2%_%CUR_HH%%time:~3,2%%time:~6,2%
20211221_005833