강좌 / 팁

윈 도 우 (수정5) 윈도우 버전구분 배치파일

2024.03.23 12:29

메리아 조회:1207 추천:14

 

질답란에서 윈10과 윈11 구분 얘기를 하다보니

배치파일에서 윈11 등의 구분에 대해 오인되는 부분이 있어서 정리하고자 합니다.

 

 

가장 최선의 구분법)

- 현재는 cmd의 ver 명령이나 레지스트리를 읽어서는 구분을 정확하게 할 수 없음.

그러므로

wmic OS GET Caption /value 명령을 이용해야함.

예시)

set "osCaption=x"

for /f "skip=1 tokens=2 delims==" %%i in ('wmic OS GET Caption /value') do for /f "delims=" %%j in ("%%i") do set "osCaption=%%j"

echo osCaption : %osCaption%

위를 문자열로 읽어서 구분

- 예시)

"Microsoft Windows 11 Pro" 이런식으로 뜨면

"Windows 11" 같은 부분을 읽어야함. 어느정도 규격화 되어 있어서 구분하기 좋음.

(아래 레지스트리에서 ProductName과 유사하나 ProductName의 값이 윈11에서는 업데이트 안되고 10으로 표시됨.

그러므로 wmic OS로 해야함.)

 

 

기존방식의 문제점)

- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion 에서 CurrentVersion 읽기

  -> 6.3에서 멈춰서 6.3에 해당하는 8.1부터 구분불가

- 상동의 레지스트리에서 ProductName 읽기

  -> 윈10까지는 쓸 수 있는데, 윈11부터는 업데이트 중지되고 10으로 표시됨.

- cmd창에서 ver 명령 결과 읽기

  -> 윈11 23H2의 결과값 : Microsoft Windows [Version 10.0.22631.2428]

      윈10에서부터 계속 10.0으로만 표시되고 빌드만 올라가므로 구분불가(단, 윈11 빌드번호는 2xxxx이므로 이걸로 구분은 가능)

 

 

릴리즈 구분할때)

1511이라거나 23H2같은 값을 구분할 필요가 있을때가 있음(윈10인지 윈11인지는 표시안됨)

이건 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion 에서 읽어서 구분가능

- ReleaseId : 2009(20H2) 이전까지만 구분가능. 이후 버전은 모두 그냥 2009로 표시됨.

- DisplayVersion : 2009부터는 이 값에서 표시됨. 그러므로 ReleaseId 먼저 읽어서 2009일때 이걸 읽어야함.

- CurrentBuildNumber : 빌드번호로서 종종 처리상 기준점이 됨. 10.0.xxx.yyy 혹은 10.0.xxx 일때 xxx를 가리킴.(XP에도 있음)

- UBR : 윈10부터 들어가는 리비전번호. 이게 필요할때가 드물게 있음. 10.0.xxx.yyy 일때 yyy를 가리킴.

 

- ProductName : 사용불가. wmic OS GET Caption 결과와 유사하나, 윈11에서는 업데이트 중지되어 10으로 표시되는 결함이 있음.

 

 

 

자세한 배치파일 적용내용은 첨부파일을 참고하세요.

 

 

 

참고로 배치파일 ver명령에서 볼 수 있는 버전표는 다음과 같습니다

(10~11이 평균이 된 요즘 시대에서는 쓰기가 좀 어렵죠 ㅠㅠ)

 

ver (command) - Wikipedia

https://en.wikipedia.org/wiki/Ver_(command)

 

Windows 2000           5.0

Windows XP             5.1

Windows Server 2003    5.2

Windows Vista          6.0

Windows Server 2008    6.0

Windows 7              6.1

Windows Server 2008 R2 6.1

Windows 8              6.2

Windows Server 2012    6.2

Windows 8.1            6.3

Windows Server 2012 R2 6.3

Windows 10             10.0

Windows Server 2016    10.0

Windows Server 2019    10.0

Windows Server 2022    10.0

Windows 11             10.0

 
(메모장에서는 간격이 맞는데 여기서는...ㅠㅠ)
 

 

추가)

첨부파일에 문제가 있어 좀 수정했습니다.

원래 숫자로 처리할땐 편했는데(?), 마소에서 숫자 구분법을 다 이상하게 만들어버리고 나니,

문자열로 처리해야되어서 새롭게 만들다보니, 중복된 이름이 나오는걸 깜빡 잊고 처리를 안했네요. ㅠㅠ

server 2012나 server 2012R2

윈 8 이나 윈 8.1

이런게 제대로 처리 안되는걸 놓쳤었네요.

기본 구분시 숫자구분이 거의 의미없어져서 숫자구분 괜히 없애고 줄이려다 이상하게 됐었군요. ㅠㅠ

 

추가2)

다양한 OS를 다 설치해볼수가 없어서 충분한 테스트를 못했는데

어차피 문자열에 관련된 부분이라 문자열을 임의로 넣고 테스트 했더니 많이 꼬였더군요.

한번 수정해서 올렸는데도 그것도 틀린게 있어서 다시 고쳤고,

계속 고치고 보니 또 복잡한게 늘어서 다시 버전 숫자 불러내는 방식을 부활시켜서 수정했습니다.

그냥 버전숫자를 6.3 이전까지는 활용하는게 낫더라구요.(사실 원래 넣었다가 불필요해 보여서 뺐었는데 더 복잡해졌기에 다시 씀)

 

이제는 정말 XP~11까지 확실히 처리할거라 봅니다만, 또 빼먹은게 있을지 모르겠네요. ㅠㅠ

 

추가3)

결국 또 실수가 있었네요. 윈서버 2022를 윈11베이스로 오인하고 있었습니다.

사실 윈11이 아주 약간 섞이기도 했고 빌드도 2xxxx로 시작해서 오해했네요.

시기상 애매하긴 해도 윈서버 2022의 기반은 윈10이 맞다는군요. ㅠㅠ(저는 2012R2랑 2016, 2019만 써봐서 몰랐음 ㅠㅠ)

 

그래서 수정5는 서버2022는 윈10으로 분류하는 수정을 했습니다.

지속적인 혼란을 드려 죄송합니다. ㅠㅠ

(이제는 더 업뎃이 없으리라 생각하지만 벌써 실수가 5번째니 확답은 못드리겠습니다 ㅠㅠ)

 

번호 제목 글쓴이 조회 추천 등록일
[공지] 강좌 작성간 참고해주세요 gooddew - - -
4460 소프트웨어| purebasic 기본적인 변수, 함수 선언 [5] 입니다 452 11 03-24
4459 소프트웨어| purebasic 폼 만들기 기본 [3] 입니다 640 13 03-24
4458 소프트웨어| pureBasic 기본 설정 [4] 입니다 953 14 03-24
» 윈 도 우| (수정5) 윈도우 버전구분 배치파일 [4] 메리아 1207 14 03-23
4456 윈 도 우| 윈도우11&10 앱 제거 무인설치 [16] 무월 1712 29 03-22
4455 소프트웨어| 윈도우를 다른 디스크에 복사하기 [20] gooddew 2041 40 03-20
4454 윈 도 우| Windows 11에서 Android를 웹캠으로 사용하는 방법 VᴇɴᴜꜱGɪ 1103 6 03-16
4453 윈 도 우| 22621.3296 22631.3296 업데이트 주의. [9] 타천사둘리 2221 12 03-14
4452 기 타| WindowsXPE147 수정버전 사용법 입니다... [27] 노랑개굴 1899 49 03-11
4451 모 바 일| 유튜브 밴스드 홈화면 해결방법(?) [8] 체리마키아 1995 8 03-10
4450 소프트웨어| WinNTSetup 윈도우7 VHD 설치 [19] 무월 1887 25 03-06
4449 기 타| [오토핫키 v1] 경로, 이름 ,드라이브명 등등 추출 함수 [2] 청락은복 867 8 03-06
4448 소프트웨어| 부팅항목숨기기,보이기-VHDman Lite0.0.8 [3] 카멜 560 10 03-06
4447 윈 도 우| 시스템 보호 설정 우클릭 메뉴 [13] 와로 1321 27 03-04
4446 소프트웨어| Bcd 항목 1회성 부팅하기-VHDmanLite [7] 카멜 753 15 03-04
4445 소프트웨어| Bcd부팅항목 메뉴 숨기기 [3] 카멜 457 9 03-04
4444 소프트웨어| 드라이버 백업&자동 설치 - WinNTSetup [17] 무월 1663 31 03-03
4443 소프트웨어| 오프라인 윈도우 드라이버 백업 [10] 카멜 1550 26 02-29
4442 윈 도 우| DISM 나의 윈도우 문제점 복구 [8] 마로94 1384 13 02-28
4441 윈 도 우| 윈도우 장치 드라이버 추출(백업) 명령어 [25] 컨피그 2713 64 02-23
XE1.11.6 Layout1.4.8