Troppe cartelle nella variabile percorso


15

Ho riscontrato uno strano problema: non riesco ad avviare Visual Studio, né eseguo semplici comandi dal prompt dei comandi, apparentemente a causa della mia variabile PATH troppo lunga. Ora che lo guardo, vedo che molte aziende hanno aggiunto le loro directory di installazione alla variabile PATH.

Mi chiedevo perché queste compagnie aggiungessero le loro cartelle al percorso (forse per semplificare l'esecuzione dei loro programmi?), E quali sono necessarie e quali posso eliminare. Se ne elimino alcuni, non sarò in grado di avviare i programmi? ( Ecco cosa esiste attualmente nel percorso)


1
Davvero non mi sembra che sia particolarmente lungo PATH... Cosa ti porta a sospettare che sia troppo lungo? VS sta gettando giù una sorta di errore? Inoltre, quale versione di Windows stai utilizzando?
bosco,

@bosco Sospetto che sia troppo lungo perché il prompt dei comandi non riesce a trovare comandi semplici come ping. Inoltre, sembra che questo non sia insolito con Visual Studio . È stato anche menzionato qui che il limite per il PERCORSO utilizzando la riga di comando è intorno al 2000.
CC Inc

Visual Studio 2012 genera l'errore "Eccezione generata dall'obiettivo di una chiamata" all'avvio. E quando ho guardato ActivityLog.xml, mi ha dettoThe type initializer for 'Microsoft.VisualStudio.Platform.WindowManagement.WindowManagerService' threw an exception.
CC Inc

2
Tutti i tipi di hack e soluzioni nella risposta accettata della domanda Stack Overflow # 4405091 :)
bosco

Risposte:


13

è possibile ridurre l'eccessiva quantità di percorsi nelle variabili di ambiente PATH, basta salvare l'intera riga su un blocco note, come backup e rimuoverne alcuni e testare.

La maggior parte di essi sono lì, quindi se un collegamento non ha un percorso completo impostato per "Target", Se "Avvia in" non è impostato correttamente nel collegamento o un lancio è fatto in modo strano il loro programma e le sue parti e pezzi sono sempre trovato. È un Failsafe nella maggior parte delle situazioni. Vorresti comunque testare completamente qualsiasi uso di qualsiasi programma che hai rimosso i suoi percorsi.
È anche molto utile per le persone che digitano i comandi nel CMDprompt, anche senza un CD, il computer scansionerà ogni posizione, fino a quando non verrà trovato ed eseguito un programma con quel nome. O qualsiasi altro comando con lo stesso nome :-)

Quella serie di percorsi era (anchient) limitata a meno di 255 (o260) caratteri, che è cambiata in 1024 qualche tempo fa, poi è stata rattoppata nell'era server'03 per gestire il 2048 e presumibilmente potrebbe gestire 8096 su alcuni sistemi, anche molto tempo fa.

Le reali limitazioni scoperte oggi in cui le persone si imbattono, è nel CMDprompt che ha un limite sulla lunghezza della stringa di comando, che include l'espansione delle variabili e dei percorsi.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682653(v=vs.85).aspx qui Microsoft dice:

"La dimensione massima di una variabile d'ambiente definita dall'utente è di 32.767 caratteri. Non vi sono limiti tecnici sulla dimensione del blocco di ambiente. Tuttavia, esistono limiti pratici a seconda del meccanismo utilizzato per accedere al blocco. Ad esempio, un file batch impossibile impostare una variabile più lunga della lunghezza massima della riga di comando. "

In quella posizione ^ indicano la posizione del registro che contiene i percorsi di sistema. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment Deve leggere il resto lì.

Il limite CMDprompt e batch è 2048 caratteri una volta espansi e si dice che sia 4x quello per i sistemi più recenti (necessita di citazione perché le persone non lo vedono)

Vedere anche http://support.microsoft.com/kb/830473 , che illustra il prompt dei comandi e la lunghezza del batch per i sistemi meno recenti.

Per assicurarsi che le voci siano corrette lì dentro, il wiki ha questo da dire:
http://en.wikipedia.org/wiki/Environment_variable

% PATH% Questa variabile contiene un elenco delimitato da punti e virgola ( non mettere spazi tra ) un elenco di directory in cui l'interprete dei comandi cercherà un file eseguibile che corrisponde al comando dato. Le variabili d'ambiente che rappresentano i percorsi possono essere nidificate all'interno della variabile PATH ma solo a un livello di riferimento indiretto. Se questa variabile d'ambiente del sottotraccia stesso contiene una variabile d'ambiente che rappresenta un percorso, PATH non si espanderà correttamente nella sostituzione della variabile.

Avere tutti i percorsi extra lì dentro rallenta alcune cose un po ', perché è quindi costretto a guardare in tutti quei luoghi, prima di arrendersi. L'utilizzo di percorsi completi ogni volta che chiama gli elementi del file sarà sempre più veloce, anche durante il batch o l'utilizzo di CMDprompt.

L'uso delle vecchie convenzioni DOSlike 8.3 è un modo per ridurre le dimensioni, questo batch /programming//a/20362922 funziona bene. assicurarsi (di nuovo) di eseguire il backup della stringa originale. Vedi anche le altre possibili soluzioni a quella domanda.

Ecco come appare il mio, è stato peggio.
% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Programmi (x86) \ QuickTime \ QTSystem \

Vorrei lanciare quicktime in un batter d'occhio, e i programmi AMD hanno messo un percorso esteso prima, lanciato, Adobee ne aveva uno, nessuno di questi contava per i metodi standard di collegamento / icona della GUI. Molte cose possono essere rimosse, quindi testare tutte le funzioni. Se si richiamano le cose digitando il prompt CMD, la rimozione di quei percorsi non funzionerà.


Quindi stai dicendo che le applicazioni non falliranno se rimuovo i percorsi?
CC Inc

Windows 7 a 64 bit
CC Inc

C'è qualcosa che sai che è già stato disinstallato? Tira fuori Qt, AMd e Nividia, (dopo averne eseguito il backup) mabey e vedi se è abbastanza corto allora? Ho pubblicato il mio, contiene circa 140 caratteri.
Psycogeek,

Bene, vedrò ..
CC Inc

3
La limitazione sembra essere di 2048 caratteri . Dopo quel punto, non posso più inserire caratteri nella GUI delle variabili d'ambiente.
Mateen Ulhaq,

9

Ho diverse variabili d'ambiente relative allo sviluppo di software sul mio percorso, tutte importanti.

La soluzione sopra non avrebbe funzionato per me, quindi sono andato per giunzioni di directory :

  • Seleziona alcuni dei percorsi più lunghi nel mio PERCORSO (Mi piace C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\)
  • Crea una piccola cartella per memorizzare i miei incroci: c: \ d \
  • Crea giunzioni brevi per percorsi lunghi:

mklink / jc: \ d \ sql "C: \ Programmi (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \"

Farlo su 15 percorsi ha ridotto il mio PERCORSO da 2045 a 1285 caratteri.

Potrebbe essere un problema quando finalmente disinstallerai elementi dal tuo computer poiché le giunzioni rimarranno lì nel percorso e dovrai pulirle manualmente.


1
Ho un ambiente di sviluppo abbastanza tipico, più recenti VS + diverse versioni precedenti e server SQL installato. Questa, finora, è stata la soluzione migliore. La risposta accettata per lanciare percorsi è ridicola.
Maglia

A cosa è stata modificata la voce del percorso di registro per C: \ Programmi (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \ in? c: \ d \ sql?
OutOFTouch

Se intendi la variabile d'ambiente PATH, allora sì. Non ho fatto confusione con altri riferimenti alle directory di SQL Server.
Juliano,

Ecco un piccolo tutorial sui collegamenti reali
ofer.sheffer

1

Mentre il massimo consentito nel percorso è molto più lungo, ho trovato su Stack Overflow risposte autorevoli su questo argomento (e riferimenti Microsoft) che affermano che funzionerà un valore di percorso massimo espanso di 2048 byte e qualsiasi cosa più lunga di ciò causerà problemi. Per "espanso" intendo che qualsiasi variabile indicata con delimitatori% avrà i loro valori inseriti per diventare il valore espanso e la lunghezza totale espansa non deve superare i 2048 byte. Ho notato che i tipi di problemi che causa (a partire da Windows 7) sono:

  • Non riconosce i percorsi alla fine del valore
  • L'installazione di software o patch che modificano il valore PATH fa sì che il valore di runtime diventi NULL, causando così tutti i tipi di problemi che eseguono Windows, come tutte le icone del menu Start, del desktop e della barra delle attività perdono le loro immagini e semplici comandi del prompt dei comandi come " ping "o" ipconfig "mostra errori di comando non riconosciuti
  • I programmi applicativi basati sui valori PATH non riescono

Personalmente, consiglio altri sistemi operativi oltre a Windows, ma se sei bloccato su di esso, allora devi passare le ore a rimuovere le voci del percorso, test per assicurarsi che non rompa nulla e ottenere il valore del percorso fino a 2048 byte.


Non è chiaro come questo risponda alla domanda dell'autore, almeno di più, rispetto alle risposte esistenti, che forniscono prove concrete per il backup delle loro dichiarazioni.
Ramhound,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.