Saltar al contenido

Reemplazar el carácter de la cadena en el script por lotes

Solución:

Puede simplificar el proceso de eliminación a una línea. Por ejemplo, si tuviera una cadena como esta:

set string=hello!

y quería eliminar el “!” en él, solo puedo hacer

set string=%string:!=%

La cadena ahora tendrá el valor "hello" en lugar de "hello!"

editar: Como señaló jeb en los comentarios, no se puede reemplazar "*" usando este método. Esto es porque * es un carácter comodín para la coincidencia de patrones de archivos por lotes (explicación brillante aquí). No sabía esto en el momento de publicar esta respuesta, ya que asumí que este método de reemplazo funcionaba para todas las cadenas de entrada. Si necesita reemplazar específicamente *, Recomiendo seguir la respuesta de magoo. De lo contrario, mantendré esta respuesta para aquellos que necesiten una solución general, breve y de una sola línea para los reemplazos de cadenas por lotes.

@ECHO OFF
SETLOCAL
SET mystring=*10.31.*2.*65
:deaster
FOR /f "tokens=1* delims=*" %%i IN ("%mystring%") DO (
   SET mystring=%%j
   IF DEFINED mystring (
      SET mystring=%%i%%j
      GOTO deaster
   ) ELSE (
      SET mystring=%%i
   )
)
ECHO result=%mystring%=

No necesita un script completo para esto. Solo necesitas una for /f círculo.

C:Usersrojo>set test=*10.*31.**2.*65

C:Usersrojo>echo %test%
*10.*31.**2.*65

C:Usersrojo>for /f "tokens=1-4 delims=.^*" %I in ("%test%") do @set test=%I.%J.%K.%L

C:Usersrojo>echo %test%
10.31.2.65

Si quieres poner el for bucle en un script por lotes, use %%I, %%J, %%K y %%L en lugar de los porcentajes individuales.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *