CMD / Batch / Registry - ¿Reemplazar cadena no funciona como se esperaba?
Me divierto más tratando de reemplazar una subcadena en una línea de código para una clave de registro de Windows
[HKEY_CLASSES_ROOT\PING\shell\open\command]
@="C:\\Windows\\System32\\ping.exe %1 -t"
Escenario y contexto:
El contexto es un protocolo de URL personalizado que abrirá un shell con ping continuo a una IP específica y quiero eliminar el protocoloping://
de la uri que se pasa como%1
. Seguro que podría usar un archivo por lotes, pero preferiría tenerlo todo en una línea en el registro
Lo que probé:
hasta ahora he intentado agregar una lista de comandos con&
estableciendo un var y luego haciéndolo eco ..
intentócall set remove=ping://
&
call set mynewvar=%1:%remove=%
&
ping.exe %mynewvar% -t
He intentado expandir las variables varias veces usando%%
Básicamente he estado obteniendo resultados extraños o el reemplazo no funciona en absoluto
¿No estoy seguro de lo que estoy haciendo mal? Al escribir esto, comencé a pensar que estoy pasando por alto el hecho de que está en cadena var@="..."
Gracias
Clave de 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 escrito en url ping://8.8.8.8
salida de solicitud de cmd Ping request could not find host ping://8.8.8.8/ar. Please check the name and try again.
Noto elar
después de que la ip es de%var%
parece que está usando el%v
no%var