我有一个 100 多个序列号的列表。我要做的是:检查我正在使用的计算机的序列号是否在列表中。是否可以在 Windows 批处理脚本中执行此操作?
问问题
2676 次
3 回答
1
此命令行显示我的计算机(Windows 8)中的 BIOS 序列号:
for /F "skip=1 tokens=3" %s in ('wmic bios list BRIEF') do echo %s
您可以对其进行测试和调整,直到得到您想要的。例如:
@echo off
for /F "skip=1 tokens=3" %%s in ('wmic bios list BRIEF') do set serial=%%s
for /F "delims=" %%s in (serialList.txt) do if "%%s" equ "%serial%" goto found
echo Not found
goto :EOF
:found
echo OK
编辑:我修改了程序,以便在批处理文件中包含序列号;我还使用了wmic
Stephan 建议的参数修改:
@echo off
for /F "tokens=2 delims==" %%s in ('wmic bios get serialnumber /value') do set serial=%%s
for %%s in (serial0 serial1 serial2 serial3 serial4 serial5 serial6 serial7 serial8 serial9
ser90 ser91 ser92 ser93 ser94 ser95 ser96 ser97 ser98 ser99 ser100 ser101) do (
if "%%s" equ "%serial%" goto found
)
echo Not found
goto :EOF
:found
echo OK
于 2013-11-13T01:03:58.770 回答
1
无需遍历文件中的每一行:
@echo off
for /F "tokens=2 delims==" %%s in ('wmic bios get serialnumber /value') do (
findstr "%%s" serials.txt
)
if %errorlevel%==0 ( echo Serialnumber found ) else ( echo Serialnumber not listed )
于 2013-11-13T07:14:30.023 回答
0
如果您将列表用作搜索字符串并将 WMIC BIOS 输出用作目标,则无需 FOR 循环。我相信序列号始终是 10 个字符,因此不需要任何/I
选项。但是,如果序列号长度可以变化,则/I
由于 FINDSTR 错误而需要该选项:为什么这个具有多个文字搜索字符串的 FINDSTR 示例找不到匹配项?
wmic bios get serialNumber|findstr /blg:list.txt&&echo number found||echo number not listed
您可以通过使用 将 FINDSTR 输出重定向到 nul 来禁止将序列号输出到屏幕上>nul
。
于 2013-11-13T18:48:34.723 回答