如何在没有 .REG 文件的情况下通过命令行向注册表添加值?

如何在没有 .REG 文件的情况下通过命令行向注册表添加值?

我需要定期将我的外部 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

相关内容