Prompt de comando - Como adicionar um caminho definido apenas para a execução desse arquivo em lote?

187

Basicamente, eu sei que posso percorrer meu painel de controle e modificar a variável de caminho. Mas, eu estou querendo saber se existe uma maneira de através da programação em lote ter um caminho temporário incluído? Dessa forma, ele é usado apenas durante a execução do arquivo em lote. Não quero que as pessoas entrem e modifiquem suas variáveis ​​de caminho apenas para usar meu arquivo em lotes.

Michael
fonte

Respostas:

318

Assim como qualquer outra variável de ambiente, com SET:

SET PATH=%PATH%;c:\whatever\else

Se você deseja que uma pequena verificação de segurança seja incorporada primeiro, verifique se o novo caminho existe primeiro:

IF EXIST c:\whatever\else SET PATH=%PATH%;c:\whatever\else

Se você deseja que ele seja local para esse arquivo em lotes, use setlocal:

setlocal
set PATH=...
set OTHERTHING=...

@REM Rest of your script

Leia atentamente os documentos para setlocal/ endlocale dê uma olhada nas outras referências nesse site - o Functions também é bastante interessante e a sintaxe é complicada.

A página Sintaxe deve dar os primeiros passos no básico.

Esteira
fonte
3
Se você adicionar um setlocalao seu arquivo em lotes, o caminho será visível apenas no arquivo
jeb
como você adiciona "setlocal"? Isso está no lugar de "SET"?
26611 Michael
@ Michel: atualizei minha resposta com links. Leia algumas documentações / exemplos / tutoriais sobre scripts do cmd - SETé realmente algo que você deve saber e entender antes de executar qualquer script.
Mat
2
Poupança de vida. Eu precisava adicionar um EV em um servidor que não pôde ser reiniciado e isso permite que eu faça o que preciso sem ter que agendar uma reinicialização!
Dav_i 30/08/2013
8
Mesmo sem SETLOCALser, no máximo, apenas para aquela sessão individual de prompt de comando - se você estiver fazendo isso com mais de um arquivo em lotes e usando EXIT /B %N%, então SETLOCALbasicamente você fará o dump de suas alterações quando o script terminar. : - /
BrainSlugs83
21

Há um detalhe importante:

set PATH="C:\linutils;C:\wingit\bin;%PATH%"

não funciona, enquanto

set PATH=C:\linutils;C:\wingit\bin;%PATH%

trabalho. A diferença são as citações!

UPD também vê o comentário de venimus

18446744073709551615
fonte
3
de fato, SET "PATH=...%PATH%"outros espaços existentes no caminho causarão erros ou mau comportamento. O agrupamento entre aspas como este não os incluirá, mas definirá adequadamente a variável. O mesmo funciona para qualquer outra variável env.
venimus 02/09/19
20

Isso mesmo, mas não o altera permanentemente, mas apenas para o prompt de comando atual, se você deseja alterá-lo permanentemente, deve usar, por exemplo, o seguinte:

setx ENV_VAR_NAME "DESIRED_PATH" /m

Isso mudará permanentemente e sim, você poderá substituí-lo por outro script em lote.

dumbak
fonte
Talvez /mprecise ser depois setx?
precisa saber é o seguinte
Funciona da mesma forma para mim, mas este script em lote do Win é um negócio inacabado da MS. Na minha empresa, onde temos todos os mesmos laptops com o mesmo sistema não é um script universal para a definição PATH e estamos mantendo 2 ou 3 deles, de modo que funciona para você :)
dumbak
Obrigado pela atualização. No Windows Server 2012, quando eu coloquei /mno final, o DESIRED_PATHfoi adicionado com / m no final apenas para o usuário atual.
suzanshakya
11
Uma palavra de cautela. Usando setx em um caminho, tentando adicionar mais a ele, e a string tem> 1024, descobri que o resultado (meu ambiente PATH) estava truncado permanentemente. (Uma coisa boa que eu tinha poderia copiar o%% PATH eu tinha ecoou antes da mudança, e colocá-lo novamente usando a ferramenta variáveis do Windows Ambiente.)
Andreas Jansson
Atenção! Este comando substitui diretamente a variável de ambiente do sistema! Eu os havia excluído e tentado corrigi-los. E também para quem cometeu esse erro: não reinicie o seu computador. Escreva echo %path%e você obterá o caminho carregado atual. Você precisa distinguir as variáveis ​​de ambiente Usuário e Sistema umas das outras. Em seguida, você pode aplicá-los manualmente no local correto.
Alper