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

Posted

技术标签:

【中文标题】根据 Windows 版本运行的批处理脚本【英文标题】:A Batch Script that runs depending on the Windows edition 【发布时间】:2021-10-27 18:33:22 【问题描述】:

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

我还查看了以下注册表项 EditionID:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersionwmic os get caption,但作为一个批量初学者,我无法将其集成到我的 .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
) 

【问题讨论】:

如果您无法检查 wmic 命令输出中是否存在某些关键字,那么您可以运行该命令并使用“>”将其输出到文件中。然后您可以尝试检查该文件的关键字。 【参考方案1】:

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

@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

如果检测到的操作系统不是 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。

【讨论】:

谢谢 ;) ,效果很好,你是个天才。您是否有一个链接可以像在您的表格中一样以十进制形式查找“SKU”,因为我发现的唯一内容是:link 但您必须转换它们,它的日期为 2018 年(有些缺失)。跨度> TBH,我不@saitama。我使用个人列表,目前有 113 个项目,这是我在多年的 PC 维修和安装过程中自己创建的。 其中 29 个可能是 Windows 10 版本。

以上是关于根据 Windows 版本运行的批处理脚本的主要内容,如果未能解决你的问题,请参考以下文章

将批处理文件输出管道传输到 Python 脚本

windows调度程序每x分钟运行一次批处理脚本(.bat)? [复制]

Windows 10与Windows 7中的批处理文件调用命令

如果在windows下处理 python版本冲突问题?python 2.5和2.6版本冲突

当以 SYSTEM 用户(批处理)运行脚本时,更改当前登录的 Windows 用户的注册表值

无法在 windows 批处理脚本中运行 sqlplus || ORA-28040: 没有匹配的身份验证协议异常