如何制作一个脚本在电脑中查证的脚本?

问题描述 投票:0回答:1

我想制作一个脚本来检查电脑中的许可证。我想得到这样的输出。

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)

但是,我怎么能显示 部分产品键, 许可证状态 下面各 名称? 谢谢!我想做一个脚本来检查我电脑里的许可证。

batch-file
1个回答
1
投票

你可以使用标准的内置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

1
投票

wmic对它的输出做了一些奇怪的事情(实际上它的输出是 互动 之间 WMICFOR /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!
)
© www.soinside.com 2019 - 2024. All rights reserved.