Aqui estão algumas maneiras adequadas para uso em arquivos em lote:
wmic os get "SerialNumber" | find /v "SerialNumber"
for /f "tokens=3" %p in ('SystemInfo ^| find "Product ID"') do @echo %p
for /f "tokens=3" %p in ('reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v ProductID') do @echo %p