Spaces no comando SETX PATH

3

Suponha que meu PATH seja C:\WINDOWS\system32\;C:\Program Files\Important\

SET NEW_PATH=C:\My\Dir\
SETX PATH "%PATH%;%NEW_PATH%"

Resulta em um caminho de:

C:\WINDOWS\system32\;C:\Program Files\Important\;C:\My\Dir"

Observe as aspas no final do caminho. É como se a barra invertida no final de% NEW_PATH% tivesse escapado da marca final da cotação. Preciso das aspas porque tenho espaços no meu caminho, mas não quero que as barras invertidas sejam interpretadas como caracteres de escape.

Qual é o caminho certo para incluir meu PATH na chamada para o SETX?

    
por Jeremy Stein 04.05.2010 / 20:20

2 respostas

6

Não coloque uma barra invertida no final de %NEW_PATH% .

Se você recebeu uma entrada aleatória para começar, em vez de as coisas que você controla, siga um destes procedimentos:

  • Deixe de fora as aspas de fechamento. Isso funciona em alguns casos:

    > setx foo "bar baz
    
    > echo %foo%
    bar baz
    

    Mas não funciona tão bem em outras pessoas:

    > setx foo "Some stuff "with" embeddded quotes
    
    > echo %foo%
    Some stuff with embeddded quotes
    

    No entanto, você já tem esse problema para começar, então o que você fez lá foi perigoso na melhor das hipóteses, já que isso destruiria os caminhos citados (o que você precisa se o seu caminho incluir um ponto-e-vírgula) .

    O que nos leva à seguinte opção:

  • Escaneie corretamente o que estiver no comando:

    set NEW_PATH=C:\I\Hate\User\Dirs\In\The\Root\
    rem Note the extra quotation marks; we're constructing the complete
    rem argument to setx here.
    set NEW_PATH_VAR="%PATH%;%NEW_PATH%"
    rem The great escape
    set NEW_PATH_VAR=%NEW_PATH_VAR:"=\"%
    setx PATH %NEW_PATH_VAR%
    
por 04.05.2010 / 21:03
1

Se NEW_PATH não contiver espaços, não será necessário citá-lo:

SET NEW_PATH=C:\My\Dir\
SETX PATH "%PATH%";%NEW_PATH%

Se NEW_PATH contiver espaços, você poderá usar o valor literal e novamente não cite a barra invertida final:

SETX PATH "%PATH%;C:\My Dir"\
    
por 06.06.2015 / 22:21