CMD / Lote / Registro - A substituição da sequência não está funcionando conforme o esperado?
Estou me divertindo muito tentando substituir uma substring em uma linha de código por uma chave de registro do Windows
[HKEY_CLASSES_ROOT\PING\shell\open\command]
@="C:\\Windows\\System32\\ping.exe %1 -t"
Cenário e Contexto:
O contexto é um protocolo de URL personalizado que abrirá um shell com ping contínuo para um ip específico e eu quero remover o protocoloping://
do uri que é passado como%1
. certeza de que eu poderia usar um arquivo em lotes, mas eu preferiria ter tudo em uma linha no registro
O que eu tentei:
até agora tentei anexar uma lista de comandos com&
definindo um var e ecoando ..
tentoucall set remove=ping://
&
call set mynewvar=%1:%remove=%
&
ping.exe %mynewvar% -t
Eu tentei expandir as variáveis algumas vezes usando%%
Basicamente, eu tenho obtido resultados estranhos ou a substituição não está funcionando.
Não sabe o que estou fazendo de errado? Ao digitar isso, comecei a pensar que estou ignorando o fato de estar na string var@="..."
obrigado
Chave do registro
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\PING]
@="url:ping protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\PING\shell]
[HKEY_CLASSES_ROOT\PING\shell\open]
[HKEY_CLASSES_ROOT\PING\shell\open\command]
@="cmd /k set var=%1 & call set var=%%var:ping://=%% & ping.exe %var% -t"
navegador digitado no URL ping://8.8.8.8
saída do prompt do cmd Ping request could not find host ping://8.8.8.8/ar. Please check the name and try again.
Eu percebo oar
depois que o ip é de%var%
parece que está usando o%v
não%var