Windows 如何仅使用脚本获取最后5个字符的Office许可证密钥

Windows 如何仅使用脚本获取最后5个字符的Office许可证密钥,windows,cmd,ms-office,Windows,Cmd,Ms Office,我使用下面的命令获取office密钥的最后5个字符 cscript "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus >> key.txt 结果显示在文本文件中: Microsoft (R) Windows Script Host Version 5.812 Copyright (C) Microsoft Corporation. All rights reserved. ---Processing---

我使用下面的命令获取office密钥的最后5个字符

cscript "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus >> key.txt
结果显示在文本文件中:

Microsoft (R) Windows Script Host Version 5.812 Copyright (C) Microsoft Corporation. All rights reserved.

---Processing--------------------------
--------------------------------------- PRODUCT ID: 00216-40000-00000-AA541 SKU ID: b322da9c-a2e2-4058-9e4e-f59a6970bd69 LICENSE NAME: Office 15, OfficeProPlusVL_KMS_Client edition LICENSE DESCRIPTION: Office 15, VOLUME_KMSCLIENT channel LICENSE STATUS: 
---LICENSED---  Last 5 characters of installed product key: GVGXT ........
如何只获取“GVGXT”而不获取大量信息。我试图读取key.txt,只获取“GVGXT”,然后存储在csv中。

要处理文件(或命令的输出),请使用
for/f
循环:

@echo off
setlocal
for /f "tokens=2 delims=:." %%a in ('cscript "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus') do set "key=%%a"
set "key=%key: =%" & REM remove spaces
echo ---%key%---
for
循环通过将行拆分为
(它对每行执行此操作,但每次都会覆盖变量,从而捕获最后一行的第二个标记)。然后简单地删除剩余的空间


(您甚至可以只使用
“tokens=9”
,它使用默认的分隔符空格、制表符、逗号,但我不建议这样做,因为我不知道您的所有计算机是否都返回英文文本,并且其他语言的字数可能会有所不同。)

它将返回附加在
key.txt
上的最后一个键

@echo off

setlocal

for /f "tokens=2 delims=:" %%G IN ('findstr /C:"Last 5 characters of installed product key:" ^<key.txt') do ( set "key=%%G" )
set "key=%key: =%"
echo %key%

可能有几种产品

(Get-WmiObject -Class SoftwareLicensingProduct -Filter 'ProductKeyId != NULL') |
    Select-Object -Property Description,PartialProductKey
可以将其放入.bat脚本文件或cmd.exe命令行中

powershell -NoLogo -NoProfile -Command ^
    "(Get-WmiObject -Class SoftwareLicensingProduct -Filter 'ProductKeyId != NULL') |" ^
    "    Select-Object -Property Description,PartialProductKey"

我们需要知道
csv
文件的结构,以便添加新行。只是好奇您是否只想获得附加在
key.txt
上的最后一个键?
powershell -NoLogo -NoProfile -Command ^
    "(Get-WmiObject -Class SoftwareLicensingProduct -Filter 'ProductKeyId != NULL') |" ^
    "    Select-Object -Property Description,PartialProductKey"