Variável de ambiente é muito grande no Windows 10

147

Sei que isso é estranho e passei quase três dias pesquisando a solução on-line sem obter uma solução útil. Então eu decidi vir aqui.

Atualizei recentemente para o Windows 10 a partir do Windows 8.1.

Agora eu queria definir uma variável de ambiente para minha nova instalação do Apache Maven.

Cada vez que criei a variável de usuário, tudo está bem. No entanto, também preciso criar a variável do sistema em que precisarei anexar o diretório bin à variável que já crio na variável do usuário como "caminho".

Agora, cada vez que faço isso, recebo um erro que diz "Essa variável de ambiente é muito grande. Como resultado disso, não consigo criar o caminho.

Anexei a imagem deste erro.

Eu aprecio isso se alguém puder me ajudar a resolver esse problema.

Agradeço antecipadamente por sua ajuda.insira a descrição da imagem aqui

olammy
fonte
14
Espero que eles consertem isso algum dia. Isso nunca deve acontecer. ^^
itmuckel
1
A solução correta é que os aplicativos parem de usar mal PATHa variável de ambiente. A solução adequada já existe há quase duas décadas . Mas conseguir que os desenvolvedores o usem é como arrancar dentes.
22819 Ian Boyd

Respostas:

148

Quando a variável PATH é sobrecarregada com muitos valores, ela atinge um ponto em que você não pode mais adicionar valores. Tentar o seguinte deve resolver seu problema.

Solução 1:

  1. Crie uma nova variável de sistema, diga 'NEWPATH'
  2. Atribua o local do diretório bin para 'NEWPATH'
  3. Agora acrescente ' ; % NEWPATH% 'para a variável PATH

Se isso ainda não funcionar, tente copiar parte dos valores já existentes da variável PATH para o 'NEWPATH' e, em seguida, acrescente o 'NEWPATH'

Solução 2:

Verifique o valor da variável PATH se puder agrupar e encurtar os caminhos. Por exemplo,

C: \ Arquivos de programas \ Microsoft SQL Server \ 102 \ Tools \ Binn \; C: \ Arquivos de programas \ Microsoft SQL Server \ 102 \ DTS \ Bin \;

pode ser combinado para

C: \ Arquivos de Programas \ Microsoft SQL Server;

Dessa forma, você pode criar mais espaço em sua variável PATH de comprimento fixo e, finalmente, ajustar o local do diretório bin em PATH.

Espero que isso ajude você!

Swapnil Kamat
fonte
Sim, você está muito correto. Tantas pesquisas me mostraram que a variável de caminho pode ter apenas 2048 caracteres e, quando os caracteres chegarem a esse estágio, a variável de caminho não poderá mais ter muitos caracteres. Então, eu tentei o que você sugeriu e agora estou bem. Obrigado
olammy 30/12/2015
Obrigado! Essa é uma ótima idéia na solução 1! Deveria ter pensado nisso ... :)
Dev-iL
2
Isso funciona como um encanto, obrigado! No entanto, é preciso ter cuidado ao usar, setx PATHporque isso resolverá diretamente a %NEWPATH%string resultante e será mais uma vez muito longa ... Portanto, usando essa abordagem, somente a caixa de diálogo e não a linha de comando devem ser utilizadas
IceFire
1
@SwapnilKamat Isso não funciona completamente: eu estou usando o miktex, pdflatexele deve estar dentro PATH, se eu colocar o local pdflatexem NEWPATH, pdflatexele não será mais encontrado ("o comando pdflatexnão é reconhecido" ...)
Olorin
7
Ironicamente, o Microsoft SQL Server definiu tantas variáveis ​​de caminho que, por si só, quase preenchem o espaço. Criei uma variável PATHS_MSSQL e adicionei% PATHS_MSSQL% à variável PATH para substituí-las. Liberou muito espaço na variável PATH.
Steve Lloyd
49

Existem algumas maneiras de limpar sua variável de caminho. O mais fácil é usar o Rapid Environment Editor . Este utilitário gratuito irá,

  1. Remova os caminhos duplicados (clique com o botão direito do mouse> Caminhos de limpeza)
  2. Remova pastas inexistentes (mostradas em vermelho que você precisa excluir manualmente)
  3. Substitua caminhos longos por caminhos curtos (clique com o botão direito do mouse> caminho longo a curto).

Eu faço as etapas acima em ordem e uso a 3ª etapa apenas para os caminhos mais longos até que o tamanho da variável Path esteja no controle novamente.

Se você quiser avançar mais, aqui está uma pequena ferramenta C # que você pode modificar para qualquer outra lógica que você queira implementar.

Shital Shah
fonte
Antes de ler este post, eu nunca tinha ouvido falar de nenhuma ferramenta, mas feliz por ter! Obrigado por compartilhar!
James Shaw
2
Esta ferramenta é incrível! A Microsoft deve torná-lo o editor oficial que acompanha o Windows!
22919 burzum
35

Outra solução ou mais uma solução alternativa para ignorar o limite de tamanho da variável PATH do ambiente é gerenciar seu caminho (adicionar, remover ou atualizar) usando um PowerShellscript;

  1. Capture a variável PATH atual clicando em "Editar texto" (veja a captura de tela acima) e copie-a para a área de transferência e salve-a em um arquivo de texto como backup também para evitar surpresas ruins. Isso não é obrigatório, mas permitirá que você se recupere se algo der errado.

  2. Agora que foi feito o backup, adicione o seguinte a um novo arquivo do PowerShell (.ps1) (alterando a primeira linha abaixo com o (s) caminho (s) da pasta que você deseja adicionar (a parte após o sinal +):

    $ newPath = $ env: Caminho + '; C: \ Usuários .... \ FirstFolderToAddToPath; C: \ Usuários .... \ SecondFolderToAddToPath; '

    [Environment] :: SetEnvironmentVariable ("Caminho", $ newPath, "Máquina")

    $ env: Caminho = $ newPath

Foi assim que consegui recuperar minha variável PATH (longa) depois de jogar com a interface do Windows 10, sendo pego pela limitação de comprimento e perdendo a maior parte do meu caminho. Espero que ajude.

Sifou13
fonte
Obrigado .. Isso foi fácil. O que é curiosos a diferença entre o valor da atribuição na linha 2 e 3
Nayak
A linha 3 define na sessão atual, a linha 2 como padrão da máquina.
Tetsujin no Oni
2
PS funciona por mais tempo caminho, mas tradicionais setx /mtrunca a 1048 caracteres :( Você também pode editar caminho no editor de texto e apenas fazer. [Environment]::SetEnvironmentVariable("Path", '\my\new;path1', "Machine")Você vai precisar de shell de administração..
Shital Shah
É possível usar o PS, mas não a GUI. Hum, como isso faz sentido? Voto a favor, obrigado!
Legends
11

Além da resposta de Swapnil, observe que você pode modificar o comprimento máximo da variável Path - que é limitada a 2048 caracteres (enquanto um único caminho tem um limite histórico de 206 caracteres). No Windows 10, você consegue isso definindo a LongPathsEnabledchave do registro como 1, que pode ser encontrada aqui:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

Para acessar o editor de registro:, Windows Key+Rdigite Regedit.

Fonte: https://superuser.com/a/1119980

Também dê uma olhada nesta resposta do Superusuário: https://superuser.com/a/1119980/327009

Abordando o comentário abaixo: o erro "A variável de ambiente é muito grande" está relacionado à variável inteira, não ao caminho único que está sendo adicionado no momento.

alexlomba87
fonte
19
Esse conselho é preciso? O comprimento máximo da variável PATH (ou seja, concatenação de vários caminhos ) é 2048 caracteres. 260 caracteres que você mencionou são o comprimento máximo de um caminho . Eles estão relacionados, mas não são os mesmos.
Hendy Irawan 22/09
7

Resposta tardia, mas eu estava procurando por algo semelhante e acabei aqui. Alterei todos os caminhos para variáveis ​​de arquivos de programa e dados de programa (este salva como 1 caractere, embora não seja tão importante).

Para algo como nodejs, mudei o caminho normal de

C: \ Arquivos de programas \ nodejs \

para

% ProgramFiles% \ nodejs \

Isso pode ser feito com "C: \ Arquivos de Programas (x86) \" e usando "% ProgramFiles (x86)% \"

Isso me salvou alguns personagens, mas o suficiente para que eu parasse de reclamar.

Bryan
fonte
7
Por que não usar% x86% para substituir "C: \ Arquivos de Programas (x86)" e% x64% para substituir "C: \ Arquivos de Programas", parece que essa é uma maneira muito melhor de reduzir a sobrecarga de caracteres.
Xorcist
1
@Xorcist - nice one! Não tinha idéia sobre aqueles
mark1234
Eu não acho que eles existem por padrão, mas você pode criá-los você mesmo.
Gabriel Fair
Também fiz isso, criei% PF% para "c: \ Program FIles" e usá-lo cerca de 20 vezes me permitiu diminuir o caminho o suficiente.
LaBracca
@Xorcist, como isso é feito criando outra variável?
Demodave
5

Eu descobri que você pode fazer via PowerShell.

[System.Environment]::SetEnvironmentVariable("PATH", "C:\Program Files (x86......etc.....", "Machine")

Então peguei o PATH do sistema existente, colei no bloco de notas, adicionei o meu novo e colei no bit "C: \ Arquivos de Programas" acima. Caminho atualizado. Feito.

ESTAR
fonte
4

Tente modificar por regedit, no meu caso, funciona quando o comprimento é superior a 3000.

Pressione Win + Re digite regeditpara abrir o regedit. Vá para Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environmente modifique o valor do Pathseu caminho. E reinicie o computador, ele deve funcionar.

yu yang Jian
fonte
1
Isso funcionou bem para mim. Eu acho que é fácil do que outros métodos.
shalitha senanayaka 16/02
1

Gambiarra:

Por favor, reinicie o sistema. Após reiniciar o sistema, PATH não está mais vazio, mas pode ser truncado para 2047 (4095) caracteres. Se a reinicialização do sistema não ajudar, por favor:

Inicie c: \ windows \ system32 \ regedit.exe Vá para a seção do registro "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" Limpe diretórios desnecessários da tecla "Caminho" Reinicie o sistema

Nota: Em alguns casos excepcionais, se o sistema não puder iniciar, por favor:

Efetue login no modo de segurança Abra o shell do prompt de comando e digite: reg add "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v Caminho / t REG_EXPAND_SZ / d ^% SystemRoot ^% \ system32; ^% SystemRoot ^% / f

Para obter mais detalhes: https://software.intel.com/en-us/articles/limitation-to-the-length-of-the-system-path-variable

LeoZ
fonte
Como aumentar o limite para pelo menos 4095?
Dan M.
1

Além de outros métodos (por exemplo, Powershell), encontrei uma boa interface gráfica, "Rapid Environment Editor", que pode lidar com valores de texto maiores.

https://www.rapidee.com/en/download

Amir
fonte
0

Aparentemente, o Rapid Environment Editor fará isso por você (da resposta @shatil_shah), mas você também pode encurtar os caminhos para a versão "8dot3". Você terá muita quilometragem com apenas essas duas substituições:

C:\Program Files       --> C:\PROGRA~1
C:\Program Files (x86) --> C:\PROGRA~2

Se você copiar seu caminho atual no Bloco de Notas, primeiro pesquise e substitua C:\Program Files (x86)e depois C:\Progam Files.

bfris
fonte
-3

Solução alternativa. Use Editar texto e edite seu PATH em um editor de texto

Christoph Adamakis
fonte
2
Estou tentando seguir o seu conselho. Em que arquivo as variáveis ​​ambientais estão armazenadas no meu computador?
Gabriel Fair
é apenas texto. Abri-lo usando o bloco de notas
Christoph Adamakis 26/11
@ GabrielFair Você teve que clicar no botão chamado Edit Text, em vez de abrir algum arquivo.
precisa saber é o seguinte