【发布时间】:2021-10-20 04:37:50
【问题描述】:
我想要一个在 CMD 中使用这些选项的脚本:
wmic bios get serialnumber
然后询问供应商,即。惠普或戴尔。
那么输出应该是类似于来自 wmic 的vendor-serialnumber,然后在序列号中添加一个 -,如下所示:
YHT3-1234
“-”应始终位于序列号的最后 4 位数字之前,
所以最终的输出会是这样的:
HP-YHT3-1234
【问题讨论】:
-
您在测试WMIC时是否使用过以下命令
BIOS Get Manufacturer?肯定会返回Hewlett-Packard或类似的东西,那么为什么要求最终用户输入供应商呢?不要为脚本的潜在问题敞开大门,头号问题始终是最终用户! -
我不想要完整的输出长度。我只想要一个简短的标识符。因此,如果脚本询问诸如“供应商是什么:%input%”之类的问题,那么 %output%-Serialnumber 以及最后 4 位数字/字母前面的 - 会很棒。最终输出应该类似于:%input%-YTHE-1234
-
如果
Manufacturer字符串包含HP或Hewlett-Packard,那么您的脚本可以检测到并自动添加前缀HP,而不是要求最终用户确定并正确键入。字符串Dell也是如此。就像我说的,如果脚本已经可以使用这些信息,并且使用相同的 WMI 查询,那么就没有理由让最终用户参与进来,从而导致潜在的问题。 -
wmic BIOS get Version是否返回对供应商有用的信息?在我的系统上,它返回类似<short_vendor_name> - <version_number>的内容。如果这没有帮助,为什么不使用翻译列表:for %%K in ("Dell Inc.=Dell" "Microsoft Corp.=MS" "Hewlett-Packard=HP") do for /F "tokens=1* delims== eol==" %%I in ("%%~K") do if /I "%Manufacturer%"=="%%I" set "Vendor=%%J"
标签: batch-file cmd scripting