Path Variable per Batch Datei setzen

Robmantuto

Ensign
Registriert
Apr. 2008
Beiträge
155
Hallo, habe folgendes Script:
@Echo Off
set oldpath=%path%
set prog=C:\oracle\product\10.2.0\client_2\bin;TEST2
setx Path "%oldpath%;%prog%" -m
start C:\Programme\BOC\ADONIS40_DE_CS\areena.exe
pause
setx Path "%oldpath%" -m

ich möchte, dass ein ein Pfad in die Umgebungsvariable "Path" eingetragen wird, sodass mein Programm starten kann.
Folgende Lösung brauche ich:
Entweder
1. der oben genannte Pfad C:\oracle\product\10.2.0\client_2\bin;TEST2 soll eintragen werden, der schon eingetragene soll durch diesen ersetzt werden, sobald ich aber das CMD-Fenster schliesse, soll wieder der alte Pfad wiederhergestellt werden.
oder
2. der oben genannte Pfad C:\oracle\product\10.2.0\client_2\bin;TEST2 soll am Anfang des schon vorhandenen Pfads in der Umgebungsvariable eingetragen werden.

Mein Script funktioniert eigentlich, auch mit der Wiederherstellung des schon bereits bestehnden Eintrags, nur dass der gewünschte Pfad hinten eingetragen wird.

Habt Ihr eine Lösung.

Dann habe noch eine Frage zu Userrechten und zwar das Script soll duch einen Normaluser benutzt werden, leider ist aber bei diesem die Bearbeitung der einzelnen Umgebunsvariablen ausgegraut, also der Button "Bearbeiten" ist nicht greifbar. Kann man diese irgendwie für den User freischalten, gibt irgendwo sozusagen Beabeitung der Umgebunsvariablen für den User freigeben?
 
@Echo Off
path=%path%;C:\oracle\product\10.2.0\client_2\bin;TEST2
start C:\Programme\BOC\ADONIS40_DE_CS\areena.exe
exit

Reicht das nicht schon? Du willst die Umgebungsvariable doch eh nicht speichern, die Änderungen sind ja eh nicht dauerhaft, also kannst du es doch so machen wie beschrieben?

Die Path Variable besteht aus 2 Teilen. Systemteil und Userteil. Ein normaler Benutzer kann nur den Userteil ändern, daher stehen solche Änderungen am Ende, zu Beginn kommt immer der Systemteil.
 
Code:
set path=C:\oracle\product\10.2.0\client_2\bin;TEST2;%path%
1. mit 2. versteh ich aber nicht. Willst du ihn nun ersetzen oder vorn anfügen?
 
am wäre es, wenn der Eintrag vorne sein würde.
soweit ich weiss, muss das cmd-fenster offen bleiben, damit der eintrag bestehen bleibt, ansonsten funktioniert es nicht.
@easy.2ci
mit deinem script würde es nicht gehen.

also nochmal, um es deutlicher darzustellen.
damit das programm ohne fehler funktioniert, muss der eintrag am anfang der UV "Path" eintragen sein und dieser Eintrag muss die ganze Zeit vorhanden sein solange das Programm noch offen ist. Schliesse ich das Programm, so soll der alte Eintrag der UV "Path" wiederhergestellt werden. Deshalb wäre das beste, wenn mein Pfad am Anfang der Variable eingetragen wird, sodass die alten noch bestehen bleiben wie z.B. die, die für den Systemteil zuständig sind.
Mehr möchte ich nicht, ist das möglich?
 
Zuletzt bearbeitet:
Wieso genau? Warum würde das nicht gehen?
weil das cmd-fenst zugeht und dann wirds nicht permanent einetragen.
das test2 ist nur, damit ich erkennen kann ob es eintragen wurde, nicht beachten. ist nur ein test gewesen.
 
Über set in der Kommandozeile wirst du sowieso nie die Umgebungsvariable global setzen können, denn das gilt nur für die Kommandozeile selbst. Lad dir mal den Process Explorer runter, starte die Batch, öffne die Eigenschaften von der Anwendung im Process Explorer und irgendwo gibts da nen Tab Variablen oder so. Dort siehst du alle Umgebungsvariablen, die für das Programm gültig sind.
 
Robmantuto schrieb:
weil das cmd-fenst zugeht und dann wirds nicht permanent einetragen.
das test2 ist nur, damit ich erkennen kann ob es eintragen wurde, nicht beachten. ist nur ein test gewesen.

Das Setzen der UV wirkt sich nur auf den laufenden Prozess aus. D.h. wenn du dein Programm "areena.exe" in dieser Batch-Datei startest, ist die UV für diesen Prozess gesetzt; auch wenn das cmd-Fenster vorher zugeht. Von außen kannst du das nicht erkennen.
Wie Yuuri schon sagt, das Umsetzen der globalen UVs ist in einer Shell nicht ohne weiteres (oder vielleicht auch gar nicht?) möglich.
 
deshalb mit setx, da geht es mit dem setzen, nur ich muss rausfinden, wie ich den eintrag nach vorne bekommen und da ich mit dos nicht so auskenne, wollte ich die experten fragen. am besten wäre mir mein script, was ich auch von einem anderen bekommen habe. dieses funktioniert, nur eben die eine Kleinigkeit brauch ich.
 
Wenn du es eh global machst, warum dann nicht gleich über den Systemdialog?
 
ich habe es
@Echo Off
set oldpath=%path%
set prog=C:\oracle\product\10.2.0\client_2\bin;TEST2
setx Path "%prog%;%oldpath%" -m
start C:\Programme\BOC\ADONIS40_DE_CS\areena.exe
pause
setx Path "%oldpath%" -m
Ergänzung ()

vielleicht zur erklärung, dieses script soll ein normaluser benutzen, d.h. es ist nur was vorübergehendes, dieser hat keine adminrechte, es soll nur während der programmnutzung ins system gegriffen werden, alles andere ist nicht gewollt, deshalb über diesem weg.
 
Zuletzt bearbeitet: (korrektur)
Sieh dir mal start /W bzw. start /WAIT (weiß ich gerade nicht) an.
 
In Antwort #5 habe ich geschrieben, wie du den Eintrag nach vorne bekommst:
path=C:\oracle\product\10.2.0\client_2\bin;%path%

Hier nochmal als Beispiel:
C:\Users\xxx>echo %TTT%
%TTT%

C:\Users\xxx>set TTT=hallo

C:\Users\xxx>echo %TTT%
hallo

C:\Users\xxx>set TTT=test_%TTT%

C:\Users\xxx>echo %TTT%
test_hallo

C:\Users\xxx>

Wo ist also dein Problem?
 
Wie gesagt, die Path Variable besteht aus 2 Teilen. Der User kann den Userteil der Path variable dauerhaft ändern. Die wird in der Registry unter HKCU gespeichert wo der User logischerweise Schreibrechte hat.

Die setx Geschichte ist immernoch überflüssig so wie sie verwendet wird.
 
Durch die Änderung in der Registry ist es aber noch nicht getan. Theoretisch müsste man sich danach neu anmelden, damit jede Anwendung davon Wind bekommt.
 
Zurück
Oben