亲爱的人们和其他人,您好,
今天我想创建一个简单的脚本,认为将结果存储到以下命令的 var 中会很容易:
wmic bios get serialnumber | findstr /N /V SerialNumber
结果:
2:H3GK4S1
3:
问题是当我尝试使用 wmic 获取序列号时,它会按预期返回字符串,但也会返回一个空字符串/行。当我尝试将序列存储到变量时,它会存储它,然后直接用空字符串覆盖它。这是我现在几乎可以使用的功能:
FOR /F "tokens=*" %g IN ('Wmic Bios Get SerialNumber ^| FINDSTR /N /V SerialNumber') DO (SET serial=%g & ECHO %g)
这给出了以下输出:
FOR /F "tokens=*" %g IN ('Wmic Bios Get SerialNumber ^| FINDSTR /N /V SerialNumber') DO (SET serial=%g & ECHO %g)
2:H3GK4S1
3:
从上面可以看出,循环覆盖了串行变量,如果有人能帮助我找到正确的方向来使其工作,我会很生气。
最佳答案
在命令提示符处:
For /F "Tokens=1* Delims==" %g In ('WMIC BIOS Get SerialNumber /Value') Do @For /F "Tokens=*" %i In ("%h") Do @Set "serial=%i" & Echo %i
或者在批处理文件中:
@For /F "Tokens=1* Delims==" %%g In ('WMIC BIOS Get SerialNumber /Value'
) Do @For /F "Tokens=*" %%i In ("%%h") Do @Set "serial=%%i" & Echo %%i
@Pause
编辑
如果您愿意在批处理文件中使用带标签的部分:
@Echo Off
Set "serial="
For /F "Skip=1 Delims=" %%A In ('WMIC BIOS Get SerialNumber') Do If Not Defined serial Call :Sub %%A
Set serial 2>Nul
Pause
GoTo :EOF
:Sub
Set "serial=%*"
GoTo :EOF
关于windows - 将部分结果命令存储到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49671319/