![如何在没有 .REG 文件的情况下通过命令行向注册表添加值?](https://linux22.com/image/1347929/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%20.REG%20%E6%96%87%E4%BB%B6%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E9%80%9A%E8%BF%87%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%90%91%E6%B3%A8%E5%86%8C%E8%A1%A8%E6%B7%BB%E5%8A%A0%E5%80%BC%EF%BC%9F.png)
我需要定期将我的外部 IP 地址添加到 Windows 注册表中,并且我想使用 bat/cmd 文件来执行此操作以自动执行该过程。
我能够利用本网站上的这篇文章使用 curl.exe 获取我的外部 IPhttp://icanhazip.com并将该IP设置为批处理过程中的变量。
现在我只需要一种方法来获取该变量并将其注入到注册表中。
我知道 reg.exe 或 regedit.exe 可以通过引用 .REG 文件将信息添加到注册表,但我不太清楚如何在没有 .REG 文件的情况下获取我获得的变量并将其添加。
我已经尝试过的一件事是使用已经创建的 .REG 文件,将其复制到新文件(以保留原始 .REG 文件以供重复使用),然后使用 echo 将变量放入 .REG 文件中,例如:
echo "some_reg_value"="%externalIP%" >> addIP.reg
问题在于 %externalIP% 变量在 IP 地址后面添加了一个额外的空格,因此在 .REG 文件和添加 .REG 文件后,它在 .REG 文件中和注册表中看起来像这样:
"some_reg_value"="192.168.1.100 "
对于我试图使用它的目的而言,最后的额外空间会带来严重的问题。
有没有办法从变量中删除多余的空间?
这就是我获取变量的方法:
%CURL%\curl http://icanhazip.com > %CURL%\publicIP.txt
for /f "delims= " %%G in (%CURL%\publicIP.txt) do set PublicIP=%%G & del %CURL%\publicIP.txt
任何帮助都将不胜感激。我已经有一段时间没有尝试使用批处理脚本做很多事情了,我记不住很多可用的命令。
答案1
我认为解决方案是“显而易见”的:
… do set PublicIP=%%G& del %CURL%\publicIP.txt
IE,不在命令末尾包含一个空格set PublicIP=
。
但是,另一个有用的技巧是%PublicIP:~0,-1%
,即%PublicIP%
删除最后一个字符。请参阅help set
。