根据 Windows 版本运行的批处理脚本
A Batch Script that runs depending on the Windows edition
我正在寻找允许我 运行 或不允许的批次,具体取决于 Windows 的版本。它会 运行 在 Windows 10 的所有版本上,除了 Home(或 Core)和 S。目前我已经成功地根据构建过滤,但这还不够。
我还查看了 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
和 wmic 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。
我正在寻找允许我 运行 或不允许的批次,具体取决于 Windows 的版本。它会 运行 在 Windows 10 的所有版本上,除了 Home(或 Core)和 S。目前我已经成功地根据构建过滤,但这还不够。
我还查看了 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
和 wmic 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。