Para uma CMD
sessão, posso definir facilmente um novo caminho:SET PATH=%PATH%;"insert custom path here"
Fazer isso em um arquivo em lotes não considera se o caminho personalizado já está incluído. Como evito duplicá-lo (por exemplo, verifique se ele já está contido na "string" PATH).
Observações:
- Relacionado: Como anexar variáveis de ambiente definidas pelo usuário à variável de sistema PATH no Windows 7?
- Relacionado: Como anexar permanentemente uma entrada na variável PATH do sistema, via linha de comando?
- Mesma pergunta para UNIX: Adicione o diretório ao $ PATH se ele ainda não estiver lá
- Algumas operações de string "CMD" explicadas: http://ss64.com/nt/syntax-replace.html
windows
command-line
path
Horst Walter
fonte
fonte
Respostas:
Semelhante à resposta do MaddHackers, apenas mais compacta.
echo %path%|find /i "%np%">nul || set path=%path%;%np%
%np%
é o seu novo caminho, é claro que você pode usar literais. O que faz:echo %path%|find /i "%np%">nul
pesquisa o caminho existente por uma sequência, descartando a saída.||
significa executar em caso de falha, o que significa: Caminho de pesquisa para a sequência a ser adicionada e, se não for encontrada, adicione-a.Edit: Geralmente não é necessário citar caminhos, mesmo aqueles que contenham espaços, mas se você quiser citá-los , esta versão funcionará com caminhos com aspas duplas:
echo %path%|find /i "%np:"=%">nul || set path=%path%;%np%
Editar: alterado
findstr /i /c:
para,find /i
poisfindstr
pode interpretar erroneamente algumas seqüências, conforme observado pelo KubaOber nos comentáriosfonte
%np%
contiver aspas - sim, fará com que ele se comporte mal.echo %path%|findstr /i /c:"my path">nul || set path=%path%;"my path"
) deve funcionar bem.echo d\. | findstr /c:"d\."
falha, masecho d\. | find "d\."
é bemEu sei que está sujo, mas isso deve funcionar:
onde
%checkstr%
é a string a ser procurada no PATH e%newpath%
é o novo PATH a ser anexado ao PATH atualEspero que ajude, e tenho certeza de que há uma maneira mais fácil, mas isso deve funcionar por enquanto.
EDITAR
Portanto, se você não deseja adicionar as ferramentas UNIX ao Windows, tente esta sintaxe em lote:
Ugh, não é mais bonito, e pode ser feito como uma linha, se você puder obter o comando find'ed pipe para funcionar como um subcomando na instrução if ...
fonte
Script baseado na resposta de "wmz":
fonte