Atribuindo uma variável de ambiente do Windows a uma variável em lote?

0

Não consigo atribuir uma variável de ambiente a outra dentro de um script em lote.

Por exemplo, isso funcionará:

set varA=C:\this\is\a\directory

e posso usar com alegria

find /I "MyString" %varA%

sem incidentes. No entanto, se eu tentar atribuí-lo dessa maneira,

varA=%ENVVAR%\more\dirs

o lote apenas fica na janela do CMD até que eu pare.

Eu ainda estou no processo de aprender o script exclusivo do Windows obnoxious , portanto, só posso especular que está dando um ajuste ao atribuir uma variável a outra variável.

    
por Sclarki 20.08.2014 / 20:40

1 resposta

1

Uma coisa que você precisa ter cuidado com a configuração de variáveis em lote não é usar espaços desnecessariamente. (Eu não vejo isso na sua pergunta, mas queria falar com ele desde que me peguei fazendo isso enquanto resolvia o problema.) Por exemplo:

set x=123

não é o mesmo que

set x = 123

O primeiro definirá %x% para 123 , enquanto o segundo definirá %x % para 123 . (Observe o espaço após x no nome da variável e outro antes de 123 na definição.)

Outra coisa a ter em conta é que você não pode apenas dizer var=value . Para definir uma variável de ambiente, você deve usar o comando SET .

Assim, a sintaxe adequada para definir uma variável de ambiente que contém um caminho e, em seguida, uma que se expande sobre esse caminho, é a seguinte:

set x=C:\This\is\a\directory
set y=%x%\more\dirs

Você pode então usar o comando SET para verificar o conteúdo dessas variáveis.

SevocêestiverapenasaprendendolinguagensdescriptnoWindows,provavelmenteseriamaisútilparavocêignoraroloteeirdiretoparaoPowerShell.OPowerShellvemdefábricacomoWindowsVistaesuperioretambémestádisponívelparaoXP.VejacomoomesmotrabalhoseriafeitonoPowerShell.

$x='C:\This\is\a\directory'$y="$x\more dirs"

(Observação: há um motivo para as aspas duplas terem sido usadas ao definir $y , enquanto aspas simples foram usadas para $x . Nesse caso, poderíamos ter usado para definir $x , mas aspas duplas obrigatório para definir $y , pois precisávamos expandir uma variável. Você aprenderá mais sobre isso enquanto escolhe o idioma.

Depois, para verificar as variáveis, você pode apenas chamá-las diretamente.

O PowerShell também é muito menos sensível ao espaçamento na maioria dos casos.

$x=123

é o mesmo que

$x = 123
    
por 20.08.2014 / 21:07