2013-06-20 18 views
17

Ich benutzte den setx Befehl OGRE_HOME einzustellen:Ungültige Syntax mit setx

setx OGRE_HOME D:\Program Files\OgreSDK 

Jetzt muss ich Wert von OGRE_HOME ändern. Wie kann ich alle von mir eingestellten Werte suchen? Wenn ich den Befehl erneut ausführen, es zeigt, dass:

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

Nicht sicher zu verstehen, aber um alle Werte zu sehen, verwenden Sie 'set'. –

Antwort

22

Ihr Weg zum Ogre SDK ein Leerzeichen in ihm hat, das als Trennzeichen zu einem anderen Argumente interpretiert wird. Surround Ihren Weg mit " zu halten es als ein einziges Argument setx:

setx OGRE_HOME "D:\Program Files\OgreSDK" 

Um den aktuellen Wert der OGRE_HOME-Umgebungsvariable:

echo %OGRE_HOME% 

Sie müssen eine neue Eingabeaufforderung Shell öffnen kann um den Wert zu sehen, wenn Sie ihn einstellen und dann versuchen, sofort seinen Wert zu sehen.

Um alle aktuell eingestellten Umgebungsvariablen zu sehen, führen Sie einfach:

set 

nur Umgebungsvariablen zeigen, die ein bestimmtes Präfix haben (so FOOFOOBAR und FOOBAZ zeigen würde), bringe diese Vorsilbe nach set:

Alternativ können Sie die GUI verwenden, um Umgebungsvariablen zu bearbeiten (unter der Annahme, dass hier Windows 7 verwendet wird).

  • Rechtsklick auf Computer, wählen Properties
  • Klicken Sie Advanced system settings im linken Bereich
  • Vergewissern Sie sich auf der Registerkarte Advanced sind im Pop-up-Dialog
  • Klicken Sie Environment Variables... am Boden

In einem Dialogfeld werden Ihre benutzerspezifischen Umgebungsvariablen sowie Ihre systemweiten Umgebungsvariablen angezeigt. Wählen Sie einen Wert und verwenden Sie die Schaltflächen Neu/Bearbeiten/Löschen, um mit ihnen zu interagieren.

+0

Vielen Dank. Und ich werde nie Software auf Pfad mit Leerzeichen installieren, weil es einige Schwierigkeiten aufwerfen kann, die wir schwer überprüfen können. –

+0

Beachten Sie, dass Sie auch "" benötigen, wenn Sie% PATH% (für Anhänge) verwenden. – Andrew

0

Als Addendum zu @ajp15243's answer. Wenn Sie das gleiche mit Powershell tun werden, anstatt die Eingabeaufforderung oder eine Batchdatei, müssen Sie SETX anrufen mit einem führenden doppelte Anführungszeichen entgangen, wie 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 

aber so tun, kann zu ein Hinter doppelten Anführungszeichen im Wert von hkcu:\Environment\PATH hinzufügen, so können Sie dies auch tun müssen:

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

Eingabeaufforderung Ihnen diesen Fehler geben, weil Sie die Anführungszeichen vergessen.Sie haben sollten getippt:

setx OGRE_HOME “D:\Program Files\OgreSDK” 

alle Werte zu sehen, haben Sie bereits festgelegt, geben Sie entweder:

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

ODER

reg query HKEY_CURRENT_USER\Environment 
1

setx und so ziemlich alle Windows-Befehlszeile Befehle sind empfindlich gegenüber bestimmten Sonderzeichen. Darunter das Leerzeichen, aber auch das Zitat, mit dem ein Eintrag abgegrenzt wird.

Wie @ ajp15243 bereits gesagt, können Sie mit dem Leerzeichen umgehen, indem Sie den Pfad {s) zwischen zwei Zitaten sperren. Aber was, wenn Sie Pfade haben und diese Pfade bereits Zitate haben, weil sie einen Platz haben? Hier ein Beispiel:

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

In diesem Fall würden Sie Zeichen für die inneren Anführungszeichen gesetzt haben zu entkommen, wenn Sie setx verwenden oder es wird verwirrt und geben den Fehler Sie aufgelistet. ZB:

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