2013-06-20 31 views
17

ho usato il comando setx per impostare OGRE_HOME:Sintassi non valida con setx

setx OGRE_HOME D:\Program Files\OgreSDK 

ora ho bisogno di cambiare il valore di OGRE_HOME. Come posso cercare tutti i valori che ho impostato? Se corro di nuovo il comando, si vede che:

ERROR: Invalid syntax. Default option is not allowed more than '2' time(s). 
+0

Non capisco ma per vedere tutti i valori, usare 'set'. –

risposta

22

vostro percorso alla Ogre SDK ha un carattere di spazio in esso, che viene interpretato come delimitatore a un altro argomento. Circondare il vostro percorso con " di tenerlo come un unico argomento per setx:

setx OGRE_HOME "D:\Program Files\OgreSDK" 

Per visualizzare il valore corrente della variabile OGRE_HOME ambiente:

echo %OGRE_HOME% 

potrebbe essere necessario aprire una shell nuovo comando per vedere il valore se lo si imposta e quindi si sta cercando di vederne immediatamente il valore.

per vedere tutte le variabili d'ambiente attualmente impostati, basta eseguire:

set 

per visualizzare solo le variabili di ambiente che hanno un certo prefisso (così FOO avrebbe mostrato FOOBAR e FOOBAZ), mettere il prefisso dopo set:

set PREFIX 

In alternativa, è possibile utilizzare la GUI per modificare le variabili di ambiente (presupponendo che Windows 7 qui).

  • destro del mouse Computer, scegliere Properties
  • Clicca Advanced system settings nel riquadro a sinistra
  • Assicurati di essere sulla scheda Advanced nel pop-up nella finestra di
  • Clicca Environment Variables... in fondo

Viene visualizzata una finestra di dialogo con le variabili di ambiente specifiche dell'utente e le variabili di ambiente del sistema. Seleziona un valore e usa i pulsanti Nuovo/Modifica/Elimina per interagire con loro.

+0

Grazie mille. E non installerò mai il software in un percorso con caratteri di spazio, perché potrebbe incontrare dei problemi che siamo difficili da controllare. –

+0

Nota che è necessario "" anche se si utilizza% PATH% (per appendici). – Andrew

0

Come addendum a @ajp15243's answer. Se stai facendo la stessa cosa con PowerShell piuttosto che il prompt dei comandi o file batch, avrete bisogno di chiamare SETX con un leader sfuggito doppio apice, come in:

$my_path = "%PROGRAMFILES%\MySQL\MySQL Server 5.7\bin\" 
$hkcu_path = (Get-ItemProperty hkcu:\Environment).PATH + ";" + $my_path 
SETX PATH "`"$hkcu_path" # note the leading escaped quote 

Tuttavia così facendo, può causare l'aggiunta di un finale virgolette nel valore di hkcu:\Environment\PATH, quindi potrebbe essere necessario fare anche questo:

$dirty_path = (get-itemproperty hkcu:\Environment).PATH 
$clean_path = $dirty_path -replace '"','' 
SETX PATH $clean_path 
1

Prompt dei comandi si sta dando questo errore perché si è dimenticato le virgolette.Si dovrebbe aver digitato:

setx OGRE_HOME “D:\Program Files\OgreSDK” 

Per vedere tutti i valori che hai già impostata, immettere uno:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" 

O

reg query HKEY_CURRENT_USER\Environment 
1

setx e praticamente tutte le linee di comando di Windows i comandi sono sensibili a determinati caratteri speciali. Tra questi il ​​carattere dello spazio ma c'è anche la citazione che viene usata per delimitare una voce.

Come già detto @ ajp15243, è possibile gestire lo spazio bloccando il percorso tra due citazioni. Ma cosa succede se hai percorsi e quei percorsi hanno già citazioni perché trasportano uno spazio? Ecco un esempio:

MY_PATHS="c:\Program Files\path1";"c:\Program Files(x86)\Path2" 

In questo caso, si avrebbe dovuto mettere caratteri di escape per quelle virgolette interne quando si utilizza setx o sarà confondersi e dare l'errore che hai elencato. Es .:

setx -m MY_PATHS "\"c:\Program Files\path1\";\"c:\Program Files(x86)\Path2\"" 
Problemi correlati