我想制作一个脚本来检查电脑中的许可证。我想得到这样的输出。
Name: Windows(R), Professional edition
> PartialProductKey: 3V66T
> LicenseStatus: 1
Name: Office 16, Office16ProPlusVL_KMS_Client edition
> PartialProductKey: WFG99
> LicenseStatus: 1
以下是检查许可证的代码 名称:
for /f "tokens=2 delims==" %%b in ('"wmic path SoftwareLicensingProduct where (PartialProductKey is not null) get Name /value"') do (echo Name: %%b)
用于 部分产品键。
for /f "tokens=2 delims==" %%b in ('"wmic path SoftwareLicensingProduct where (PartialProductKey is not null) get PartialProductKey /value"') do (echo PartialProductKey: %%b)
而对于 许可证状态:
for /f "tokens=2 delims==" %%b in ('"wmic path SoftwareLicensingProduct where (PartialProductKey is not null) get LicenseStatus /value"') do (echo LicenseStatus: %%b)
但是,我怎么能显示 部分产品键, 许可证状态 下面各 名称? 谢谢!我想做一个脚本来检查我电脑里的许可证。
你可以使用标准的内置VBS脚本来获取你需要的信息。
@%__AppDir__%cscript.exe /NoLogo %__AppDir__%slmgr.vbs -DLi
@For %%G In (14 15 16) Do @If Exist "%ProgramFiles%\Microsoft Office\Office%%G\ospp.vbs" %__AppDir__%cscript.exe /NoLogo "%ProgramFiles%\Microsoft Office\Office%%G\ospp.vbs" /DStatus | %__AppDir__%findstr.exe /I "^License\>"
@Pause
wmic对它的输出做了一些奇怪的事情(实际上它的输出是 互动 之间 WMIC
和 FOR /F
额外增加 \r
之前 \r\n
. 该行为在SO中被广泛讨论,如 此处). 这就是为什么 findstr /V /R "^$"
是需要的。
@echo off
setlocal EnableDelayedExpansion
FOR /F tokens^=*^ delims^=^ eol^= %%L in (
'"wmic path SoftwareLicensingProduct where (PartialProductKey is not null) get Name,PartialProductKey,LicenseStatus /format:list|findstr /V /R "^^$""'
) do (
set "%%L"
echo Name: !name!
echo ^> PartialProductKey: !PartialProductKey!
echo ^> LicenseStatus: !LicenseStatus!
)