将批处理脚本中的信息插入注册表

时间:2015-06-22 14:30:01

标签: batch-file batch-processing wmic registrykey

我有一个.reg文件,它将一些信息插入到系统属性中。我想将计算机模型添加到此。 这是当前的脚本。如果可能的话,我想在这里自动插入制造商和型号。

可以使用命令提示符使用以下命令找到模型和制造商

wmic computersystem get model
wmic computersystem get manufacturer

我想知道如何将结果自动插入到.reg文件中,以便脚本适用于不同的模型等。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation]
"Logo"="c:\\OEM\\OEMLOGO.BMP"
"Manufacturer"="example"
"Model"="example"
"SupportHours"="8:30am - 5:00pm"
"SupportPhone"="0458228893"
"SupportURL"="www.web.com.au"

1 个答案:

答案 0 :(得分:0)

通常,当您想捕获并使用命令的输出时,请使用for /F循环。

for /f "delims=" %%I in ('command') do set "var=%%~I"

......或类似的。但是,WMI查询有点棘手,因为结果以奇数编码显示(UCS-2 LE,如果我没记错的话);所以捕获wmic的输出需要更多的关注。

一个技巧是查询一个额外的列,然后忽略它。然后您想要的列不受特技编码的影响。在这种情况下,

for /f "tokens=2-3 delims=," %%I in (
    'wmic computersystem get manufacturer^,model^,status /format:csv'
) do (
    set "manufacturer=%%~I"
    set "model=%%~J"
)

...应该为您提供可以使用的变量所需的值。由于第1列是您的计算机名称,第4列是"状态"您可以放下这些内容,最后得到您想要的值,不受任何行首或行尾编码怪癖的影响。

从那以后,它只是一个简单的问题

set "branch=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation"
reg add "%branch%" /v Model /d "%model%" /f
reg add "%branch%" /v Manufacturer /d "%manufacturer%" /f

>>regfile.reg echo "Model"="%model%"
>>regfile.reg echo "Manufacturer"="%manufacturer%"