我尝试制作批处理脚本以从BIOS中提取Windows产品密钥,以便可以在生产环境中正确激活计算机。
我正在运行以获取密钥的命令是wmic path SoftwareLicensingService get OA3xOriginalProductKey > text.txt
创建一个名为text.txt的文本文件,其中包含:
OA3xOriginalProductKey
xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
(注意每行后面的一些随机空格)
问题是我只需要xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
部分,但我在这方面做得很糟糕。
我尝试了以下内容:
for /F "skip=10 delims=" %%i in (text.txt) do echo %%i
for /f "tokens=1*delims=:" %%G in ('findstr /n "^" text.txt') do if %%G equ 2 echo %%H
for /f "tokens=*" %%a in (text.txt) do call :processline %%a
:processline
echo line=%*
最后但并非最不重要
for /F "tokens=2" %%i in (text.txt) do echo %%i %%j %%k
正如我所说,我度过了一段非常糟糕的时光,而且非常喜欢/ f - 我不知道我哪里出错或做什么。
答案 0 :(得分:3)
您可以使用for
来获取命令的输出。
@echo off
For /f "tokens=2 delims=," %%a in ('wmic path SoftwareLicensingService get OA3xOriginalProductKey^,VLRenewalInterval /value /format:csv') do set key=%%a
echo %key%
使用另一个wmic
令牌(此处为VLRenewalInterval
)是摆脱丑陋的wmic行结尾的几种方法之一(所需的令牌没有行结束)。