102 lines
2.8 KiB
Batchfile
102 lines
2.8 KiB
Batchfile
@echo off
|
|
REM ASCII-only so cmd parses correctly on any system code page. Chinese labels: see README.
|
|
setlocal EnableDelayedExpansion
|
|
chcp 65001 >nul 2>&1
|
|
title device_code helper
|
|
|
|
set "CPU="
|
|
set "BOARD="
|
|
set "BIOSSN="
|
|
set "MGUID="
|
|
set "MGFLAT="
|
|
|
|
where wmic >nul 2>&1
|
|
if errorlevel 1 goto NO_WMIC
|
|
|
|
for /f "tokens=1* delims==" %%a in ('wmic cpu get ProcessorId /value 2^>nul ^| findstr /i /c:"ProcessorId="') do set "CPU=%%b"
|
|
for /f "tokens=* delims= " %%z in ("!CPU!") do set "CPU=%%z"
|
|
|
|
for /f "tokens=1* delims==" %%a in ('wmic baseboard get SerialNumber /value 2^>nul ^| findstr /i /c:"SerialNumber="') do set "BOARD=%%b"
|
|
for /f "tokens=* delims= " %%z in ("!BOARD!") do set "BOARD=%%z"
|
|
|
|
for /f "tokens=1* delims==" %%a in ('wmic bios get SerialNumber /value 2^>nul ^| findstr /i /c:"SerialNumber="') do set "BIOSSN=%%b"
|
|
for /f "tokens=* delims= " %%z in ("!BIOSSN!") do set "BIOSSN=%%z"
|
|
|
|
goto READ_REG
|
|
|
|
:NO_WMIC
|
|
echo [Note] wmic not found. CPU and board lines may be empty; registry GUID is still read.
|
|
echo.
|
|
|
|
:READ_REG
|
|
for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Cryptography" /v MachineGuid 2^>nul ^| findstr /i "MachineGuid"') do set "MGUID=%%a"
|
|
for /f "tokens=* delims= " %%z in ("!MGUID!") do set "MGUID=%%z"
|
|
|
|
if not defined MGUID goto SHOW
|
|
set "MGFLAT=!MGUID:{=!"
|
|
set "MGFLAT=!MGFLAT:}=!"
|
|
set "MGFLAT=!MGFLAT:-=!"
|
|
|
|
:SHOW
|
|
cls
|
|
echo ============================================================
|
|
echo Device info - three segments for device_code - see README
|
|
echo [1] ProcessorId [2] BaseBoard serial [3] MachineGuid flat
|
|
echo ============================================================
|
|
echo.
|
|
|
|
echo [1] CPU ProcessorId - Win32_Processor
|
|
if defined CPU goto OUT_CPU
|
|
echo [not read]
|
|
goto OUT_CPU_X
|
|
:OUT_CPU
|
|
echo !CPU!
|
|
:OUT_CPU_X
|
|
echo.
|
|
|
|
echo [2] BaseBoard SerialNumber - Win32_BaseBoard
|
|
if defined BOARD goto OUT_BR
|
|
echo [not read]
|
|
goto OUT_BR_X
|
|
:OUT_BR
|
|
echo !BOARD!
|
|
:OUT_BR_X
|
|
echo.
|
|
|
|
echo [2-alt] BIOS SerialNumber - Win32_BIOS optional
|
|
if defined BIOSSN goto OUT_BS
|
|
echo [not read]
|
|
goto OUT_BS_X
|
|
:OUT_BS
|
|
echo !BIOSSN!
|
|
:OUT_BS_X
|
|
echo.
|
|
|
|
echo [3] MachineGuid - HKLM\SOFTWARE\Microsoft\Cryptography
|
|
if defined MGUID goto OUT_MG
|
|
echo [not read]
|
|
goto OUT_MG_X
|
|
:OUT_MG
|
|
echo !MGUID!
|
|
echo Flat no braces hyphens - often segment 3:
|
|
echo !MGFLAT!
|
|
:OUT_MG_X
|
|
echo.
|
|
|
|
echo ------------------------------------------------------------
|
|
echo Suggested device_code: ProcessorId-BaseBoard-MachineGuidFlat
|
|
echo ------------------------------------------------------------
|
|
if not defined CPU goto JOIN_BAD
|
|
if not defined BOARD goto JOIN_BAD
|
|
if not defined MGFLAT goto JOIN_BAD
|
|
echo !CPU!-!BOARD!-!MGFLAT!
|
|
goto JOIN_OK
|
|
:JOIN_BAD
|
|
echo [incomplete] Copy values above and join with ASCII hyphen.
|
|
:JOIN_OK
|
|
echo.
|
|
echo Note: Final device_code depends on your upstream collector.
|
|
echo.
|
|
pause
|
|
endlocal
|