Prompt dei comandi: come aggiungere un percorso impostato solo per l'esecuzione del file batch?


187

Fondamentalmente, so che posso passare attraverso il mio pannello di controllo e modificare la variabile del percorso. Ma mi chiedo se esiste un modo per la programmazione in batch di includere un percorso temporaneo? In questo modo viene utilizzato solo durante l'esecuzione del file batch. Non voglio che le persone entrino e modifichino le loro variabili di percorso solo per usare il mio file batch.

Risposte:


318

Proprio come qualsiasi altra variabile d'ambiente, con SET:

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

Se vuoi avere un piccolo controllo di sicurezza integrato prima, controlla se il nuovo percorso esiste prima:

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

Se vuoi che sia locale in quel file batch, usa setlocal:

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

@REM Rest of your script

Leggi attentamente i documenti per setlocal/ endlocal, e dai un'occhiata agli altri riferimenti su quel sito - Anche le funzioni sono piuttosto interessanti e la sintassi è complicata.

La pagina Sintassi dovrebbe iniziare con le basi.


3
Se aggiungi a setlocalal tuo file batch, il percorso è visibile solo nel file
jeb

come si aggiunge "setlocal"? È al posto di "SET"?
michael,

@micheal: aggiornata la mia risposta con i collegamenti. Si prega di leggere alcuni documenti / esempi / tutorial su script cmd - SETè davvero qualcosa che dovresti sapere e capire prima di fare qualsiasi script.
Mat,

2
Salvavita. Avevo bisogno di aggiungere un EV su un server che non poteva essere riavviato e questo mi consente di fare ciò di cui ho bisogno senza dover pianificare un riavvio!
davi

8
Anche senza SETLOCAL, al massimo, sarà solo per quella singola sessione del prompt dei comandi - se lo stai facendo da più di un file batch e usando EXIT /B %N%, allora SETLOCALfondamentalmente scaricherai le tue modifiche quando lo script esce. : - /
BrainSlugs83

21

C'è un dettaglio importante:

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

non funziona, mentre

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

lavori. La differenza sono le virgolette!

UPD vede anche il commento di Venimus


3
in realtà dovrebbe essere SET "PATH=...%PATH%"altrimenti gli spazi esistenti nel percorso causeranno errori o comportamenti scorretti. Le virgolette come questa non le includeranno ma imposteranno correttamente la variabile. Lo stesso vale per qualsiasi altra variabile env.
venimus,

20

Esatto, ma non lo modifica in modo permanente, ma solo per il prompt dei comandi corrente, se si desidera modificarlo in modo permanente, è necessario utilizzare ad esempio questo:

setx ENV_VAR_NAME "DESIRED_PATH" /m

Questo lo cambierà in modo permanente e sì, puoi sovrascriverlo con un altro script batch.


Forse /mdeve essere dopo setx?
suzanshakya,

Funziona allo stesso modo per me, ma questo Win Batch Scripting è un piccolo affare incompiuto di MS. Nella mia azienda in cui abbiamo tutti gli stessi laptop con lo stesso sistema non esiste uno script universale per l'impostazione PATH e ne stiamo mantenendo 2 o 3, quindi qualunque cosa
funzioni

Grazie per l'aggiornamento. In Windows Server 2012, quando l'ho messo /malla fine, è DESIRED_PATHstato aggiunto con / m alla fine solo per l'utente corrente.
suzanshakya,

11
Un avvertimento. Usando setx su un percorso, cercando di aggiungere altro, e la stringa è lunga> 1024, ho scoperto che il risultato (il mio ambiente PATH) è stato troncato in modo permanente. (Una buona cosa che ho potuto copiare% PATH% che avevo ECHO eliminato prima della modifica e rimetterlo usando lo strumento Windows delle variabili di ambiente.)
Andreas Jansson,

Attenzione! Questo comando sovrascrive direttamente la variabile di ambiente di sistema! Li avevo cancellati e ho provato a risolverli. E anche per chiunque abbia commesso questo errore: non riavviare il computer. Scrivi echo %path%e otterrai il percorso caricato corrente. È necessario distinguere tra loro le variabili di ambiente Utente e Sistema. Quindi è possibile applicarli manualmente nella posizione corretta.
Alper,
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.