Como modifico uma variável de ambiente com caracteres especiais?

0

Meu prompt está definido como $P$_CMD> (com um espaço no final). Isso funciona muito bem. No entanto, virtualenv 's activate.bat tem a seguinte linha:

set PROMPT=(approot) %PROMPT%

Quando executo esse comando, o cmd reclama que

The syntax of the command is incorrect.

Isso não aconteceu antes de eu alterar meu prompt. Eu tentei adicionar aspas (double " e single ' ) em torno de %PROMPT% , mas isso não funciona. Como faço para modificar o prompt, fazendo uso do valor antigo, quando o valor antigo contém caracteres especiais?

    
por Andres Riofrio 29.05.2012 / 07:08

1 resposta

1

Com a variável prompt, você nunca deve usar caracteres especiais. Sempre use o special codes que pode ser encontrado com prompt /? sempre que possível.

Em resposta ao seu comentário:

Com outras variáveis, você pode usar SetLocal EnableDelayedExpansion . Em seguida, consulte as variáveis com ! s em vez de % s.

Delayed Expansion will cause variables to be expanded at execution time rather than at parse time, this option is turned on with the SETLOCAL command. When delayed expansion is in effect variables may be referenced using !variable_name! (in addition to the normal %variable_name%)

Como a variável é expandida em tempo de execução, e o caractere especial > (neste caso) é especial apenas no momento da análise, você evita o problema completamente.

Por exemplo:

SetLocal EnableDelayedExpansion

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

Observe que ^ é o caractere de escape, permitindo que você insira caracteres especiais (a variável seria armazenada como World> , portanto, a menos que você use set test=World^^^> levando a um valor armazenado de World^> , trabalhe para sua pergunta.

Escapar pode ficar complicado. Por exemplo, para definir test2 para o literal !test! , você precisa usar ^^!test^^! , caso contrário, você obterá apenas o valor de test . Se eu realmente precisar, normalmente só vario o número de caracteres de escape até que funcione, é mais fácil do que tentar descobrir as regras de análise.

    
por 29.05.2012 / 08:41