我正在尝试通过 WMIC SoftwareLicensingProduct 循环读取来获取 Windows 10 许可信息,但它没有显示任何内容...命令行本身在 CMD 框中生成正确的信息:
%SystemRoot%\System32\wbem\wmic.exe PATH SoftwareLicensingProduct WHERE "(Name LIKE '%%Windows%%') AND (PartialProductKey is not null)" get Description, LicenseStatus, Name, PartialProductKey /format:list
作为 :
Description=Windows(R) Operating System, RETAIL channel
LicenseStatus=1
Name=Windows(R), Professional edition
PartialProductKey=....
但是,如下所示在循环中插入的命令行没有产生任何内容(首先尝试使用一个变量)...
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
set "WPath=%SystemRoot%\System32\wbem\wmic.exe"
for /f "usebackq tokens=4 delims==" %%i in ('%WPath% PATH SoftwareLicensingProduct WHERE "(Name LIKE '%%Windows%%') AND (PartialProductKey is not null)" get Description, LicenseStatus, Name, PartialProductKey /format:list') do set _variable=%%i
@echo !_variable!
答案1
您似乎认为for
带有“usebackq tokens=4”的命令将在第四行起作用,但它将在每一行都起作用,并将_variable
最后一行的第四个标记设置为空。
要在正确的行上操作,请使用命令
wmic ... | findstr PartialProductKey
要搜索的令牌将是第二个。