PATH-Variable (user), sicherstellen, dass Eintrag vorhanden
Hallo Experten,
trotz langer Recherche und Suche habe ich leider keine Lösung für mein Problem gefunden.
Ich möchte via Batchfile prüfen, ob für den angemeldeten User (nicht System, nur User!) in der PATH-Umgebung ein bestimmter Pfad enthalten ist. Nennen wir ihn c:\stuff
Sofern c:\stuff also nicht im user path enthalten ist, soll dieser Wert ans Ende hinzugefügt werden. Die Änderung sollte nach Möglichkeit sofort greifen.
Lässt sich das realisieren via Batch und wenn ja, wie?
Besten Dank im Voraus!
trotz langer Recherche und Suche habe ich leider keine Lösung für mein Problem gefunden.
Ich möchte via Batchfile prüfen, ob für den angemeldeten User (nicht System, nur User!) in der PATH-Umgebung ein bestimmter Pfad enthalten ist. Nennen wir ihn c:\stuff
Sofern c:\stuff also nicht im user path enthalten ist, soll dieser Wert ans Ende hinzugefügt werden. Die Änderung sollte nach Möglichkeit sofort greifen.
Lässt sich das realisieren via Batch und wenn ja, wie?
Besten Dank im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 81313629727
Url: https://administrator.de/forum/path-variable-user-sicherstellen-dass-eintrag-vorhanden-81313629727.html
Ausgedruckt am: 22.12.2024 um 06:12 Uhr
12 Kommentare
Neuester Kommentar
Moin,
Gruß
das ist schon mal ein guter Anfang
stimme zu - ein guter Anfang, die grundlegenden Programmiertaktiken zu lernen.Pfad dann hinzugefügt, sofern er nicht bereits vorhanden ist?
Dein Pseudocode würde ja schon funktionieren..Gruß
Aber wie bekomme ich im zweiten Schritt den Pfad dann hinzugefügt, sofern er nicht bereits vorhanden ist?
@echo off
set "mypath=C:\Anotherpath"
for /f "skip=2 tokens=1,2,*" %%a in ('reg query HKCU\Environment /v Path') do set "userpath=%%c"
reg query HKCU\Environment /v Path | findstr /ilc:"%mypath%" >nul 2>&1 || reg add HKCU\Environment /v Path /d "%userpath%;%mypath%" /f
Oder als Alternative mit Hilfe der Powershell in der Batch so
@echo off
set "mypath=C:\Anotherpath"
powershell -EP Bypass -C "$mypath = '%mypath%'; $userpath = [environment]::GetEnvironmentVariable('Path','User'); if($mypath -notin ($userpath -split ';')){[Environment]::SetEnvironmentVariable('Path',"$userpath;$mypath",'User')}"
Am Ende nimmst du den bereits existiernden Eintrag in "HKEY_CURRENT_USER\Environment und ergänzt in um den fehlenden, ggf. Noch Explorer killen, damit diese dann neu greifen
Zitat von @13034433319:
Dann hat man aber hinterher auch die Systemvariablen mit in der Uservariable drin. Aber wie bekomme ich im zweiten Schritt den Pfad dann hinzugefügt, sofern er nicht bereits vorhanden ist?
reg add HKCU\Environment /v Path /d "%PATH%;C:\AnotherPath" /f
@echo off
set "search=c:\stuff"
for /f "Tokens=2,*" %%A in ('reg query HKCU\Environment /v Path') do call :checkPath "%%~B"
pause
exit /b 0
:checkPath
echo]%~1 | >nul findstr "%search%"
if %ErrorLevel% equ 0 (echo]Pfad steht in Umgebungsvariable.) else (
reg add HKCU\Environment /v Path /t REG_EXPAND_SZ /d "%~1;%search%" /f
echo]Pfad wurde zur Umgebungsvariable hinzugefuegt.
)
Dafür nimmst du am besten Powershell...
$User = [Environment]::GetEnvironmentVariable("Path","User").Split(';')
$System = [Environment]::GetEnvironmentVariable("Path","Machine").Split(';')
$CleanUser = $User | ?{$_ -NotIn $System -and $_} | Select -Unique
[Environment]::SetEnvironmentVariable("Path",($CleanUser -Join ";"),"User")