¿Cómo modifico una variable de entorno con caracteres especiales?

¿Cómo modifico una variable de entorno con caracteres especiales?

Mi mensaje está configurado en $P$_CMD>(con un espacio al final). Esto funciona muy bien. Sin embargo,entorno virtual'sactivar.battiene la siguiente línea:

set PROMPT=(approot) %PROMPT%

Cuando ejecuto ese comando, cmd se queja de que

The syntax of the command is incorrect.

Esto no sucedió antes de que cambiara mi mensaje. Intenté agregar comillas (dobles "y simples ') alrededor de %PROMPT%, pero no funciona. ¿Cómo modifico el mensaje, utilizando el valor anterior, cuando el valor anterior contiene caracteres especiales?

Respuesta1

Con la variable de solicitud, nunca debes usar caracteres especiales. Utilice siempre elspecial codesque se puede encontrar prompt /?siempre que sea posible.

En respuesta a tu comentario:

Con otras variables, puedes usarSetLocal EnableDelayedExpansion. Luego consulte las variables con !s en lugar de %s.

La expansión retrasada hará que las variables se expandan en el momento de la ejecución en lugar de en el momento del análisis; esta opción se activa con la extensión SETLOCAL command. Cuando la expansión retrasada está en vigor, se puede hacer referencia a las variables usando !variable_name!(además del normal %variable_name%)

Dado que la variable se expande en el momento de la ejecución y el carácter especial >(en este caso) solo es especial en el momento del análisis, se evita el problema por completo.

Por ejemplo:

SetLocal EnableDelayedExpansion

set test=World^>
set test2=Hello !test!

Tenga en cuenta que ^es el carácter de escape, que le permite ingresar caracteres especiales (la variable se almacenaría como World>, por lo que, a menos que lo haga, set test=World^^^>lleve a un valor almacenado de World^>, esto no funcionará para su pregunta.

Escapar puede resultar complicado. Por ejemplo, para establecer test2el valor literal !test!, debe usar ^^!test^^!; de lo contrario, solo obtendrá el valor de test. Si realmente lo necesito, normalmente sólo varío el número de caracteres de escape hasta que funcione, es más fácil que tratar de descubrir las reglas de análisis.

información relacionada