윈 도 우 배치파일 등에서 윈도우 32비트/64비트 구분
2022.03.27 01:49
안녕하세요? 질문 게시물 댓글에 올린 내용 간략히 정리해봅니다. ^^
- https://windowsforum.kr/qna/17822316
참고 링크
- https://docs.microsoft.com/en-us/archive/blogs/david.wang/howto-detect-process-bitness
- https://ss64.com/nt/syntax-64bit.html
C:\Program Files (x86) 폴더 존재 여부 등을 체크하는 방법도 있겠지만 보다 정확한 방법을 위한 내용입니다.
1. 환경변수 이용
환경변수 | 네이티브 32비트 | 네이티브 64비트 | WOW64(64비트 OS에서 32비트 실행) |
PROCESSOR_ARCHITECTURE | x86 | AMD64, IA64, ARM64 | x86 |
PROCESSOR_ARCHITEW6432 | - | - | AMD64, IA64, ARM64 |
- WOW64; 64비트 OS에서 32비트용 유틸(TC, Q-dir 등 32비트용)에서 배치파일, cmd.exe 등을 실행할 경우에 해당합니다.
c:\Windows\SysWOW64\cmd.exe 32비트 환경에서 실행됨.
- 표에서 알 수 있듯이 다음의 경우만 32비트 OS이고, 다른 경우에는 64비트 운영체제 입니다.
PROCESSOR_ARCHITECTURE=x86 이고 PROCESSOR_ARCHITEW6432 가 정의 되어있지 않을때
- 배치 파일내에서 다음처럼 구분할 수 있습니다.
set "OSbit=64" & if %PROCESSOR_ARCHITECTURE%==x86 (if not defined PROCESSOR_ARCHITEW6432 set "OSbit=32")
2. WMIC 이용
- wmic OS Get OSArchitecture -> 결과 첫번째행; OSArchitecture / 두번째행; 64비트, 64 비트, 64-bit 등 윈도우 버전에 따라 조금씩 다름
for /f "skip=1 tokens=*" %%a in ('wmic OS Get OSArchitecture') do set "OSbit=%%a"&call set "OSbit=%%bit:~0,2%%"&goto next
:next
- wmic cpu get AddressWidth /value -> 결과 앞뒤 빈줄이 생기지만 AddressWidth=64 형태로 출력
for /f "tokens=2 delims==" %%a in ('wmic cpu get AddressWidth /value') do set "OSbit=%%a"
번외로...
3. VBScript ; GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth -> 32 또는 64 로 출력
cmd에서 실행은 다음처럼; (mshta~~~more까지 한줄로 연결된 명령어입니다.)
mshta vbscript:close(CreateObject("Scripting.FileSystemObject").GetStandardStream(1).Write(GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth))|more
4. Powershell ; [system.environment]::Is64BitOperatingSystem -> 결과 True 면 64비트
cmd에서 실행은 다음처럼;
powershell -c [system.environment]::Is64BitOperatingSystem
powershell -c "& {[system.environment]::Is64BitOperatingSystem}"
5. AutoHotkey ; A_Is64bitOS -> True(1) or False(0)
6. 닷넷4 C# 이용 ; 이렇게 까지 할 필요는 없겠지만... 흥미로...
Is64BitOS.cmd 실행하면 같은 폴더에 콘솔용 Is64BitOS.exe 가 생성되고 실행됩니다. exe가 있으면 바로 exe 실행합니다.
창이 바로 닫히므로, 콘솔에서 실행하면 64이면 True가 출력됩니다.
예전에 궁금해서 검색해본 내용인데 간략히 정리해봤습니다.
혹, 좋은 아이디어 있으시면 올려주시면 배우겠습니다. ^^
늦은 시간입니다. 편히 주무십시오. -꾸~벅-
댓글 [7]
번호 | 제목 | 글쓴이 | 조회 | 추천 | 등록일 |
---|---|---|---|---|---|
[공지] | 강좌 작성간 참고해주세요 | gooddew | - | - | - |
4309 | 윈 도 우| 윈도우 업데이트 다운로드 및 설치 오류 조치 [6] | 미스라 | 3604 | 5 | 02-17 |
4308 | 소프트웨어| (ver 0.2.3, url 파일기능) 크롬/엣지에서 URL 드래그 드롭... [7] | 메리아 | 2862 | 10 | 02-16 |
4307 | 모 바 일| 뉴진스 음악에서 보컬만 추출하기? 이거 하나면 끝!!! | mp... | toz21 | 1884 | 0 | 02-14 |
4306 | 윈 도 우| IE 강제 실행 스크립트 + 탭 여러개 열기 [6] | 녹색조각 | 2592 | 14 | 02-14 |
4305 | 기 타| 파이어 폭스 무설치 만들기 [17] | 슈머슈마 | 1547 | 9 | 02-12 |
4304 | 윈 도 우| 향상된 윈도우 자동 로그인 On/Off 스크립트 [6] |
|
2703 | 13 | 02-11 |
4303 | 소프트웨어| 현존 최강 무료 동영상 편집기 소개 및 활용법 안내 | 이게... [13] | toz21 | 2648 | 7 | 02-11 |
4302 | 소프트웨어| Pecmd.ini 위치를 Windows폴더로 이동 [6] | 카멜 | 745 | 10 | 02-10 |
4301 | 소프트웨어| (ver 0.2) 크롬/엣지에서 URL 드래그 드롭으로 제목 얻기 [11] | 메리아 | 1029 | 12 | 02-08 |
4300 | 윈 도 우| 파일을 디펜더가 차단할때, 파워쉘로 허용시키기 [7] |
|
1720 | 14 | 02-06 |
4299 | 윈 도 우| 강제로 Internet Explorer 열기 스크립트 [13] | 사랑이7 | 2801 | 20 | 02-05 |
4298 | 윈 도 우| 윈도우11 $OEM$소스 및 WinNTSetup 응용 설치! [40] | 무월 | 3441 | 49 | 02-03 |
4297 | 윈 도 우| 윈도우 부팅시 신용카드 정보를 요구할때 넘어가기 [5] | 고장난우주 | 2398 | 1 | 02-01 |
4296 | 윈 도 우| 감춰진 모든 고급 전원옵션 표시하기 [4] |
|
2120 | 13 | 01-30 |
4295 | 윈 도 우| 특정 폴더 내 임의 파일/폴더 선택 배치 함수 [10] | 지후빠 | 684 | 16 | 01-29 |
4294 | 윈 도 우| 프로그램 필요없이, 윈도우 설치 USB 만들기 [16] |
|
5641 | 27 | 01-18 |
4293 | 기 타| CMD BAT 를 UTF8 모드로 사용 [13] | 입니다 | 1649 | 22 | 01-16 |
4292 | 윈 도 우| 폴더 깊이 제한하여 파일,폴더 찾기 배치 함수 [11] | 지후빠 | 1262 | 15 | 01-12 |
4291 | 윈 도 우| 배치파일 명령어 > nul 2>&1 해석 [6] | 컨피그 | 1226 | 12 | 01-11 |
4290 | 윈 도 우| BCD 백업 및 복구 프로그램 입니다 [14] | 지룡자 | 2767 | 41 | 01-10 |
경험아니면 알수없는 깨알 부분까지 감사합니다.