manthox
Goto Top

Batch - Ändern der Benutzer Umgebungsvariable Path

Hallo,
ich möchte ein Batch Programm entwickeln welches ein neuen Pfad zur Umgebungsvariable Path des Users(Wichtig! nicht zum System) hinzufügt...
Ich probierte es mit setx Path %path%;C:\Test. Dass Funktioniert aber nicht, da immer eine Fehlermeldung(FEHLER: Ungültige Syntax. Die Standardoption darf nicht mehr als 2 Mal verwendet werden.
Geben Sie "SETX /?" ein, um die Syntax anzuzeigen.) kommt.

Moritz

Content-ID: 529906

Url: https://administrator.de/forum/batch-aendern-der-benutzer-umgebungsvariable-path-529906.html

Ausgedruckt am: 21.04.2025 um 23:04 Uhr

SeaStorm
SeaStorm 27.12.2019 aktualisiert um 18:50:48 Uhr
Goto Top
hi

Du hast die Quotes vergessen
setx PATH "%path%;c:\test"  
Manthox
Manthox 27.12.2019 um 18:57:06 Uhr
Goto Top
Danke für die Antwort SeaStorm,
jetzt werden die koompletten Pfade aus dem System Path in den User Path geschrieben.
Gibt es dafür auch eine Lösung?
mayho33
mayho33 27.12.2019 um 20:03:24 Uhr
Goto Top
LukasD
LukasD 27.12.2019 um 20:06:57 Uhr
Goto Top
Guten Abend,
eine Möglichkeit wäre über die Registry. Der Schlüssel hierzu findet sich unter "HKEY_CURRENT_USER\Environment".
Also einfach eine ".Reg" Datei erstellen und diese importieren.
Falls gewünscht vorher noch die bestehenden Werte auslesen und mit rein schreiben.
Manthox
Manthox 27.12.2019 um 20:19:45 Uhr
Goto Top
Danke LukasD das ist ein guter Vorschlag.

Kannst du mir vlt. den Command dafür herausfinden?
Manthox
Manthox 27.12.2019 aktualisiert um 20:31:20 Uhr
Goto Top
@mayho33 Danke für den Vorschlag...
jedoch habe ich mich mit dem Befehl schon mehr als genug befasst
LukasD
LukasD 27.12.2019 um 20:41:47 Uhr
Goto Top
Sollen bestehende Einträge übernommen werden?
Manthox
Manthox 27.12.2019 um 20:45:28 Uhr
Goto Top
ja bitte
SeaStorm
SeaStorm 27.12.2019 um 21:08:34 Uhr
Goto Top
Zitat von @Manthox:

Danke für die Antwort SeaStorm,
jetzt werden die koompletten Pfade aus dem System Path in den User Path geschrieben.
Gibt es dafür auch eine Lösung?
reg query HKCU\Environment /v PATH
Manthox
Manthox 27.12.2019 um 21:19:29 Uhr
Goto Top
Wie soll ich das den in den setx Befehl einarbeiten??
SeaStorm
SeaStorm 27.12.2019 aktualisiert um 22:33:02 Uhr
Goto Top
du musst das halt erst mal in eine Variable quetschen, die du dann nutzen kannst ...

FOR /F "tokens=2*" %%a in ('reg query HKCU\Environment /v PATH') do SET userpath=%%~b  
echo %userpath% 

An diesem Punkt sei mir aber folgendes gestattet: Mach das ganze nicht in Batch. Batch ist tot. Zu Recht. Nimm stattdessen Powershell. Damit geht das alles einfacher, schneller und eleganter
mayho33
mayho33 29.12.2019 aktualisiert um 14:39:47 Uhr
Goto Top
Zitat von @LukasD:
eine Möglichkeit wäre über die Registry. Der Schlüssel hierzu findet sich unter "HKEY_CURRENT_USER\Environment".
Also einfach eine ".Reg" Datei erstellen und diese importieren.

Das Problem dabei ist, vor allem wenn mehrere Maschinen im Umlauf sind mit unterschiedlicher Konfiguration, dass die %Path% nirgends gleich ist.

Einfach einen Reg Import zu machen könnte ein System leicht zerschießen.

Wenn der TO also unbedingt die %Path% anpassen muss sollte er, wenn setx nicht tut was er will, Vbscript probieren.

Hier ein Beispiel:

https://stackoverflow.com/questions/48095246/vbs-how-to-set-path-variabl ...

Alles andere macht wenig Sinn.

hier noch ein gesamtes Beispiel:
Zustand vor der Bearbeitung:
uservarbefore

SetEvnVar "USER", "PATH", "C:\My\New\Environemt\Path"  
'SetEvnVar "SYSTEM", "PATH", "C:\My\New\Environemt\Path"  

Function SetEvnVar(targetSystem, targetName, value)
	Set objShell = CreateObject( "WScript.Shell" )  
	Set objTarget = objShell.Environment( targetSystem )
	Dim newTargetValues, oldTargetValues
	
	oldTargetValues = objTarget(targetName)
	If(InStr(Len(oldTargetValues)-2, oldTargetValues, ";", 1) > 0) then  
		newTargetValues = oldTargetValues & value
	Else
		newTargetValues = oldTargetValues & ";" & value  
	End If
objTarget(targetName) = newTargetValues
End Function

Zustand nach der Bearbeitung:
uservarafter

Starten kannst du das Ganze so:
  • cmd als Administrator öffnen
  • script myscript.vbs

vielleicht solltest du den Code noch erweitern und prüfen ob der Wert schon vorhanden ist, damit du ihn nicht mehrmals einträgst, Fertig! Genauso kannst du das mit den anderen Environment Variablen machen.

So schwer ist es also nicht!

Grüße!