티스토리 뷰
각 PC에서 윈도우 날짜 설정에 따라서 %DATE% 출력 값이 상이하여 배치파일로 일정한 형태의 날짜를 구하기가 어렵습니다.
(영어, 한글 윈도우에 따라 날짜 표현 정의-레지스트리-가 다르기도 합니다.)
외부 명령어 wsh, powershell, wmic 들을 이용하여 구하는 방법이 있겠지만 PE에서 외부툴이 없는 경우 등을 생각하여 배치파일로만...
- 외부툴 이용 참고; https://stackoverflow.com/questions/1192476/format-date-and-time-in-a-windows-batch-script
HKCU\Control Panel\International\sShortDate 키 값 형태에서 yyyy-MM-dd ddd (2022-02-17 목) 각 항목 자체를 변수로 이용하는 것입니다.
레지스트리 쓰기가 없어서 관리자 권한을 요구하지 않습니다.
@echo off&setlocal enabledelayedexpansion
for /f "tokens=2*" %%a in ('reg query "HKCU\Control Panel\International" /v "sShortDate"') do set $sS=%%b
set $sS=!$sS:/= !& set $sS=!$sS:-= !& set $dD=!DATE:/= !& set $dD=!$dD:-= !
for %%a in (%$sS%) do set /a i+=1&set $i!i!=%%a
for %%a in (%$dD%) do set /a j+=1&call set %%$i!j!%%=%%a
if defined yyyy (set $y=%yyyy%) else if defined yy set $y=%yy%
if defined mm (set $m=%mm%) else if defined m set $m=%m%
if defined dd (set $d=%dd%) else if defined d set $d=%d%
if defined ddd (set $w=%ddd%) else if defined dddd set $w=%dddd%
echo %$y%-%$m%-%$d%-%$w%
echo %$y%.%$m%.%$d%.[%$w%]
pause
최종 변수 $y $m $d $w 를 modify 하면 원하는 결과를 얻을 수 있습니다.

레지스트리 sShortDate 값에 알파벳, -, /, (스페이스) 정도만 있다고 생각하여 만들어서 특별한 기호 등이 있을때는 수정이 필요할 것 같습니다.
혹시 자주 사용하는 형태에서 에러가 발생하면 댓글에 알려주시면 적용해보겠습니다.
출력형태는 원하시는 형태로 수정하실 수 있습니다.
예를 들면, yy 형태인데 2022 형태로 출력을 고정하고 싶을 때 후반부에 set $y=20!$y!& set $y=!$y:~-4! 정도를 추가할 수 있겠습니다.
'컴퓨터 팁' 카테고리의 다른 글
| The Bat! voyager 9.5.1 (0) | 2022.02.18 |
|---|---|
| PC Cleaner Pro 9.0.0.0 RePack (& Portable) (0) | 2022.02.18 |
| basics에서 windows설치 (0) | 2022.02.15 |
| K-Tools 5.1 윈도우11 설치 마무리 및 트윅 도구 (1) | 2022.02.08 |
| 윈도우 11 작업표시줄 초단위 시계 표시하기 (0) | 2022.02.08 |