Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

hier hat bestimmt Jemand eine schnelle und einfache Lösung:

Es geht um die Umgebungsvariable PATH:

Ich möchte einfach eine Variable ändern, ohne aber den kompletten PATH ändern zu müssen:

C:\Programme\Java\jre1.6.0_07\bin soll mit C:\Programme\Java\jre6\bin ersetzt werden.

Hat da Jemand eine Lösung?

Vielen Dank.

Geschrieben

Ich möchte die in der Umgebungsvariablen PATH einen bestimmten Pfad ändern:

C:\Programme\Java\jre1.6.0_07\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\WBEM;D:\Perl\bin\;d:\MSSQL7\BINN;C:\IFOR\WIN\BIN;C:\IFOR\WIN\BIN\EN_US;D:\ptc\mechWildfire_II\bin;;C:\Programme\Microsoft SQL Server\80\Tools\Binn\;C:\Programme\QuickTime\QTSystem\

in

C:\Programme\Java\jre6\bin;D:\Windows Resource Kits\Tools\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\WBEM;D:\Perl\bin\;d:\MSSQL7\BINN;C:\IFOR\WIN\BIN;C:\IFOR\WIN\BIN\EN_US;D:\ptc\mechWildfire_II\bin;;C:\Programme\Microsoft SQL Server\80\Tools\Binn\;C:\Programme\QuickTime\QTSystem\

Dass soll aber per Script im Hintergrund ablaufen.

Gibt es da eine Möglichkeit?

Geschrieben

Je nachdem ob es sich um User- oder Systembezogenen Pfad hast, sind die Daten in den entsprechenden Registry Schlüsseln zu finden und können ersetzt werden. Der Systempfad ist unter: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path

Für den aktuellen user dann entsprechend HKEY_CURRENT_USER

Es muss lediglich eine einfache String-Replace Option durchgeführt werden

Geschrieben

Wurde der JRE-Pfad manuell an den Anfang gesetzt?

Normalerweise sollte aus Sicherheitsgründen nichts vor %SystemRoot%\system32 und %SystemRoot% stehen.

Desweiteren, würde ich JRE-Pfade immer in eigene Umgebungsvariablen auslagern.

Ergo:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\WBEM;D:\Perl\bin\;d:\MSSQL7\BIN N;C:\IFOR\WIN\BIN;C:\IFOR\WIN\BIN\EN_US;D:\ptc\mec hWildfire_II\bin;;C:\Programme\Microsoft SQL Server\80\Tools\Binn\;C:\Programme\QuickTime\QTSystem\;%JAVA_HOME%\bin;D:\Windows Resource Kits\Tools\;

%ProgramFiles%\Java\jre6

Alternativ geht natürlich auch:

C:\Programme\Java\jre6

Geschrieben

Anfragen per PM helfen nicht, dass Du schneller/umfangreichere eine Antwort bekommst. Deine Fragen gehören in diesen Thread und vielleicht solltest Du Dir einmal überlegen, dass Du eine entsprechende Programmier- oder Scriptsprache brauchst, um solche Dinge automatisiert zu ändern.

Ansonsten schließe ich mich TDM an, dass so eine Lösung die sinnvollere wäre

Geschrieben

Ich habe bereits mich versucht:

rem @echo off & setlocal EnableDelayedExpansion

Set AlterPfad=C:\Programme\Java\\jre1.6.0_07\bin

Set NeuerPfad=C:\Programme\Java\jre6\bin

For %%A in ("%Path:;=" "%") do if /i not %%A=="%AlterPfad%" @set "NeuerPfad=!NeuerPfad!%%~A;"

goto end

:end

echo %NeuerPfad%

pause

leider ohne Erfolg...

Geschrieben

Mit einer Batch Datei o.ä. wirst Du nicht weit kommen, die Umgebungsvariablen bzw die Änderungen sind nur so lange gültig wie das Fenster/Session besteht. Du musst sie wie schon gesagt in der Registry ändern, um dauerhaft die Einstellungen zu übernehmen.

Geschrieben

Hallo

jetzt nur mal dumm gefragt warum stellst du nicht unter Systemeigenschaften -> Umgebungsvariablen die PATH- Variable richtig ??

Oder wenn du von Programm zu Programm unterschiedliche Java- Versionen verwendest könntest du doch auch in der Stapelverarbeitungsdatei vor java den richtigen Pfad angeben !?

Gruß Hans-Jörg

Geschrieben
Es soll auf mehreren Maschinen per Script JAVA upgedated werden - Installation + Umgebungsvariable soll ich Hintergrund ablaufen/geändert werden.

Script != Sprache.

Vielleicht wäre es hilfreich, wenn Du mal die Größenordnung über die wir sprechen, nennst. 1 Rechner, 100, 1000, 10.000......

Wenn alle Rechner identische Konfigs haben, dann kannst Du einfach einmal per Hand die Daten ändern (am Besten so wie TDM vorgeschlagen hat), den Registry Schlüssel exportieren und einmal bei allen Rechnern per Script einfach importieren. Wenn Du aber keine identische Konfiguration hast, dann geht das nicht. Dann muss etwas Programmieren, wozu aber eine Batch Datei nicht reichen wird! Dann musst Du schon mal die Sprachen nennen, die Dir zur Verfügung stehen.

Lass Dir nicht reden kleinen Sch***** aus der Nase ziehen. Wir versuchen ja schon zu helfen

Geschrieben

Wenn alle Rechner identische Konfigs haben, dann kannst Du einfach einmal per Hand die Daten ändern (am Besten so wie TDM vorgeschlagen hat), den Registry Schlüssel exportieren und einmal bei allen Rechnern per Script einfach importieren.

Öhm, würd ich so nicht machen.

Besser wär vielleicht eine Batch-Datei, die die benutzerlose Installation von Java startet, den Pfad als Parameter bekommt und diesen via setx einfach in die JAVA_HOME-Variable schreibt.

hmm, womöglich will ich grad wieder mit Kanonen auf Spatzen schießen. :floet:

Geschrieben

Es geht um etwa 100 Rechner, die aber zum Großteil verschieden Konfiguriert sind - mit versch. Programmen und auch versch. Betriebssystemen (Windows XP 32 Bit und Windows XP 64 Bit)

Ich habe bereits ein Batch, dass mir per AT-Befehl und Übergabe Java 6 Update 16 installiert. Nach der Installation habe ich nur dass Problem, dass Windows immer noch im PATH die ältere Version (Java 6 Update 7) stehen hat. Ändere ich den Path auf Java 6 Update 16 (C.\Program Files (86x)\Java\jre6\bin) erkennt Windows die neue Windows Installation (java -version) - mache ich das nicht, greift Windoff immer auf die ältere Version zu.

Problem taucht nur auf, wenn ich JAVA per Batch SILENT installiere (was notwendig ist).

Nur die JAVA_HOME Variable auf die neue Version zu setzten erbrachte keinen Erfolg. Anscheinend muss der Eintrag im PATH stehen.

Kanonen wären schon angebracht :rolleyes:

Geschrieben

Nur die JAVA_HOME Variable auf die neue Version zu setzten erbrachte keinen Erfolg. Anscheinend muss der Eintrag im PATH stehen.

Deswegen sollte JAVA_HOME ja auch in den Pfad(, aber eben als Variable und nicht einfach den Inhalt kopieren).

Jedenfalls solltest du weg vom normalen "set", setx funktioniert in dem Zusammenhang mit Umgebungsvariablen viel besser.

Geh ich recht in der Annahme, das es sich um eine Art Softwareverteilung handelt?

Geschrieben

Achso meinst du dass:

D:\Windows Resource Kits\Tools\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\WBEM;D:\Perl\bin\;d:\MSSQL7\BINN;C:\IFOR\WIN\BIN;C:\IFOR\WIN\BIN\EN_US;D:\ptc\mechWildfire_II\bin;;C:\Programme\Microsoft SQL Server\80\Tools\Binn\;C:\Programme\QuickTime\QTSystem\;%JAVA_HOME%

Dass ich die JAVA_HOME Variable mit in die PATH Variable nehme?!

Aber dann muss ich einen Weg finden die JAVA_HOME Variable DAUERHAFT zu setzten.

Genau es handelt sich um eine Art Softwareverteilung....

Geschrieben

D:\Windows Resource Kits\Tools\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\WBEM;D:\Perl\bin\;d:\MSSQL7\BINN;C:\IFOR\WIN\BIN;C:\IFOR\WIN\BIN\EN_US;D:\ptc\mechWildfire_II\bin;;C:\Programme\Microsoft SQL Server\80\Tools\Binn\;C:\Programme\QuickTime\QTSystem\;%JAVA_HOME%

Dass ich die JAVA_HOME Variable mit in die PATH Variable nehme?!

Fast. Ich würde %JAVA_HOME% auf das Installationsverzeichnis setzen und im Path dann aber %JAVA_HOME%\bin benutzen.

(Analog zu %SystemRoot%\system32)

Aber dann muss ich einen Weg finden die JAVA_HOME Variable DAUERHAFT zu setzten.

Wie weiter vorn schon angedeutet, sollte man dazu einfach setx nehmen, wenn der Link etwas untergegangen ist, hier nochmal direkt:

Environment Variablen setzen (SETX.EXE)

Ich schieb die Exe standardmäßig eigentlich in den System32-Ordner, aber das ist beliebig, wenn der Pfad der Exe in der Path-Variable liegt, kann man die ja ohne Probleme in Batch-Dateien verwenden.

[Editerle]

Weils mir grad auffällt: Wenn du das Resource Kit schon im Path hast, sollte da eigentlich auch die setx.exe dabei sein.

Geschrieben

Eine Möglichkeit habe ich noch !

Ich würde JAVA immer im selben Verzeichnis installieren !

Beispiel: C:\Windows\JAVA

Das heißt wenn es für alle eine neue Version geben soll wird die alte einfach deinstalliert und die neue Version ins selbe Verzeichnis installiert. So wirds zumindest bei uns gemacht für den "normalen" Anwender. Und wir reden hier von mehreren Tausend installationen.

Gruß Hans-Jörg

Geschrieben
Resource Kit ist nicht auf den Client installiert....

Aber es steht im PATH an erster Stelle -> folglich wird es ja installiert sein, wenn dieser für mehrere Rechner gilt.

Ansonsten, wie gesagt, setx.exe einfach rausziehen und auf die Rechner setzen.

Ich würde JAVA immer im selben Verzeichnis installieren !

Beispiel: C:\Windows\JAVA

Das heißt wenn es für alle eine neue Version geben soll wird die alte einfach deinstalliert und die neue Version ins selbe Verzeichnis installiert.

Das Problem ist, dass er von Updates sprach. AFAIK geht ein Überinstallieren in den selben Ordner der Updates nicht so einfach. (Erst die VM deinstallieren, neue Komplettinstallation drüberbügeln etc.)

Aber ich lass mich gern, eines Besseren belehren.

Geschrieben

Was spricht denn dagegen, das ganze via setx und JAVA_HOME zu lösen.

Man muss doch nur einmal per Script (ich denke ein kleines VB Script reicht da), den bestehenden Pfad aus dem Registry Schlüssel entfernen und durch JAVA_HOME ersetzen.

D.h.:

VB Script manipuliert Registry

setx auf die Rechner kopieren

JAVA_HOME wird gesetzt

Update wird durchgeführt

Das lässt sich doch einfach bewerkstelligen

Geschrieben

Hallo zusammen,

gibt es eine Möglichkeit in der Registry unter: HKLM\System\ControlSet001\SessionManager\Enviroment\PATH an diesen Pfad der PATH-Variablen einen EIntrag "nur" anzuhängen? Damit alle Einträge die bereits in der PATH-Variablen gemacht sind nicht überschreiben werden, sondern dass nur ein Pfad angehängt wird.

Kennt da Jemand eine Möglichkeit?

Geschrieben

Ich kenne eine.


Set objWSHShell	= WScript.CreateObject("WScript.Shell")

RegPath	= "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment\"


Key	= objWSHShell.RegRead(RegPath & "Path")

Key = Key & ";C:\neuen\Pfad\hinzufuegen\;"

objWSHShell.RegWrite RegPath & "Path", Key, "REG_EXPAND_SZ"

Geschrieben

Set wshShell = CreateObject("WScript.Shell")

' Auslesen der bestehenden Pfadvariablen PATH

For Each strEnv in Array("SYSTEM")

For Each str In wshShell.Environment(strEnv)

If InStr(1, str, "PATH=", vbTextCompare)<>0 Then

oldPfad = Split(str, "=")

oPfad = oldPfad(1)

End If

Next

Next

'Anhängen von C:\Program Files (x86)\Java\jre6\bin an die Pfad Variablen PATH

Set wshUEnv = wshShell.Environment("SYSTEM")

Pfad = oPfad & ";C:\Program Files (x86)\Java\jre6\bin" & ZielverzeichnisS

wshUEnv("PATH") = CStr(Pfad)

Danke dir.

Ich habe noch eine weiter Frage:

So weit so gut - Nun kann ich im PATH etwas anhängen, ist es auch möglich nach gezielten Einträgen (alle Java-Pfad Einträge) im PATH zu suchen und diese aus der PATH-Variable herauszulöschen zu löschen (ohne die ganze PATH-Variable zu löschen?

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...