根据 Windows 版本运行的批处理脚本

A Batch Script that runs depending on the Windows edition

我正在寻找允许我 运行 或不允许的批次,具体取决于 Windows 的版本。它会 运行 在 Windows 10 的所有版本上,除了 Home(或 Core)和 S。目前我已经成功地根据构建过滤,但这还不够。

我还查看了 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersionwmic os get caption 中的注册表项 EditionID 但是作为批处理的初学者我无法将它集成到我的 .bat

FOR /f "tokens=6 delims=[]. " %%i in ('ver') do SET build=%%i
IF %build% LSS 17763 (
COLOR E
ECHO.===============================================================================
ECHO.           ALERT - Not compatible with previous versions ... the RS5
ECHO.===============================================================================
ECHO.
PAUSE
GOTO :EOF
) 

您可以在批处理文件的开头使用它:

@Echo Off
SetLocal EnableExtensions
Set /A "SKU=OSV=0"
For /F "EOL=O Tokens=1,2 Delims=. " %%G In ('%SystemRoot%\System32\wbem\WMIC.exe
 OS Where "Version>10" Get OperatingSystemSKU^, Version 2^>NUL'
) Do Set /A "SKU=%%G, OSV=%%H" 2>NUL
If Not %OSV% Equ 10 GoTo :EOF
For %%G In (98 99 100 101 123 125 126 129 130 131) Do If %%G Equ %SKU% GoTo :EOF
Rem Your code goes here

如果检测到 OS 不是 Windows 10,并且 Windows 10 版本是以下任何一种,则结束脚本:

Edition Identifier SKU Operating System Definition
CoreN 98 Windows 10 Home N
CoreCountrySpecific 99 Windows 10 Home China
CoreSingleLanguage 100 Windows 10 Home single language
Core 101 Windows 10 Home
IoTUAP 123 Windows 10 IoT Core
EnterpriseS 125 Windows 10 Enterprise LTSB
EnterpriseSN 126 Windows 10 Enterprise LTSB N
EnterpriseSEval 129 Windows 10 Enterprise LTSB Evaluation
EnterpriseSNEval 130 Windows 10 Enterprise LTSB N Evaluation
IoTUAPCommercial 131 Windows 10 IoT Core Commercial

您显然可以根据需要在 8 行的括号内添加或删除 SKU。