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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
12 Kommentare
Neuester Kommentar
Hi!
Hast du dir das schon mal angesehen? :
https://docs.microsoft.com/en-us/windows-server/administration/windows-c ...
Grüße!
Hast du dir das schon mal angesehen? :
https://docs.microsoft.com/en-us/windows-server/administration/windows-c ...
Grüße!
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 PATHDanke 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?
du musst das halt erst mal in eine Variable quetschen, die du dann nutzen kannst ...
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
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
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.
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:
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:
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!