es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Extraiga un GUID de XML en un script por lotes

Tengo una cadena

<?define customGUID=          "DA7C36F0-A749-4CC5-9575-398C06039325"?>

Estoy tratando de eliminar DA7C36F0-A749-4CC5-9575-398C06039325 de esta línea.

Para empezar, intenté guardar esta cadena en una variable, pero no puedo hacerlo, tal vez por el < y ? en la cadena. Intenté:

set "var=<?define customGUID=            "DA7C36F0-A749-4CC5-9575-398C06039325"?>"

Pero luego pude obtener de alguna manera la cadena en tiempo de ejecución y ahora tengo la variable

line=<?define customGUID=             "DA7C36F0-A749-4CC5-9575-398C06039325"?>

No puedo encontrar cómo puedo eliminar solo el valor es decir DA7C36F0-A749-4CC5-9575-398C06039325 de esta variable usando un script por lotes.

Al menos intenté eliminar el sufijo con:

set "line=%line:"?>%"

Pero obtengo un error, ¿alguien puede ayudar con un mejor enfoque?
Nota: los espacios están incluidos en la cadena.

Tags:  

Answer

  1. Avatar for davy.ai

    Para recortar el valor DA7C36F0-A749-4CC5-9575-398C06039325 de la cadena dada, puedes utilizar el siguiente código de script por lotes:

    @echo off
    setlocal enabledelayedexpansion
    
    set "line=<?define customGUID=           "DA7C36F0-A749-4CC5-9575-398C06039325"?>"
    
    for /f "tokens=3 delims== " %%a in ("%line%") do (
        set "customGUID=%%a"
        set "customGUID=!customGUID:~1,-1!"
    )
    
    echo %customGUID%
    

    Explicación:
    – El bucle for extrae el valor de customGUID de la cadena especificando delims== para dividir la cadena en = y, por lo tanto, capturando el valor como el tercer token.
    – El valor extraído se asigna a la variable customGUID.
    – La línea set "customGUID=!customGUID:~1,-1!" recorta el valor para eliminar las comillas dobles que rodean al GUID.

    La salida del código anterior será DA7C36F0-A749-4CC5-9575-398C06039325.

Comments are closed.