Como posso adicionar um valor ao registro via linha de comando sem um arquivo .REG?

2

Eu tenho a necessidade de adicionar o meu endereço IP externo ao registro do Windows em uma base programada, e eu quero fazer isso com um arquivo bat / cmd para automatizar o processo.

Consegui usar o conselho de esta postagem neste site para usar o curl.exe para obter meu IP externo usando o link e definir esse IP como uma variável dentro do processo em lote.

Agora só preciso de uma maneira de pegar essa variável e injetá-la no registro.

Eu sei que reg.exe ou regedit.exe pode adicionar informações ao registro referenciando um arquivo .REG, mas eu não sei exatamente como pegar a variável que recebo e adicioná-la sem um arquivo .REG.

Uma coisa que eu já tentei era usar um arquivo .REG já criado, copiando para um novo arquivo (para preservar o arquivo .REG original para reutilização), então use o echo para colocar a variável no arquivo .REG, como:

echo "some_reg_value"="%externalIP%" >> addIP.reg

O problema com isso é que a variável% externalIP% está adicionando um espaço adicional após o endereço IP, de modo que se parece com isso no arquivo .REG e no registro depois que o arquivo .REG é adicionado:

"some_reg_value"="192.168.1.100 " 

Esse espaço extra no final causa um problema sério para o propósito que estou tentando usá-lo.

Existe possivelmente uma maneira de remover esse espaço extra da variável?

É assim que estou obtendo a variável:

%CURL%\curl http://icanhazip.com > %CURL%\publicIP.txt
for /f "delims= " %%G in (%CURL%\publicIP.txt) do set PublicIP=%%G & del %CURL%\publicIP.txt

Qualquer ajuda seria muito apreciada. Já faz um bom tempo desde que eu tentei fazer muito com scripts em lote e não me lembro de muitos dos comandos disponíveis.

    
por T-Fed 22.01.2013 / 04:38

1 resposta

3

Eu suspeito que a solução é dolorosamente "óbvia":

… do set PublicIP=%%G& del %CURL%\publicIP.txt

ou seja, não inclua um espaço no final do comando set PublicIP= .

No entanto, outro truque útil é saber sobre %PublicIP:~0,-1% , que é %PublicIP% com o último caractere removido. Veja help set .

    
por 22.01.2013 / 05:27