Umgebungsvairablen, per batch oder script

Hallo …
gibt es eine Möglichkeit auf Windows XP, eine Umgebungsvariable hinzufügen oder eine zu verändern und zwar mit einem batch-datei oder mit einem kleinen tool so das ich das tool vom command-line (Eingabe aufforderung) aufrufen kann. und diese umgebungsvariable sollte für andere programme zugänglich sein, denn mit set test=etwas kann man eine „lokale“ umgebungsvariable setzen.

alternativ, stehen überhaupt die umgebungsvariablen in einer datei auf systemverzeichnisse, so kann ich nähmlich ein tool entwicklen der die datei ändert…

Danke
Gruß

Salü

Eine Umngebungsvariable bearbeiten auf der Kommandoprompt bzw. im Batch erfolgt mit dem Befehle „Set“. Dieser hat sich seit den alten DOS-Tagen massiv entwickelt.

Wenn Du unter XP / 2003 mit „help set“ Dir die Hilfe anschaust, dann wirst Du staunen. Das allereinfachste ist gleichgeblieben:
abfragen:
„set“
setzen
„set farbe=bordaux“

Grüsse
Peter

Mit „set“ gesetze Variablen sind dann aber nur in dieser Session verfügbar.
Sobald z.B. das DOS-Fenster geschlossen wird, sind die Variablen wieder weg.

MS stellt aber im Windows Resource Kit „setx“ bereit, mit diesem Befehl bleiben die Variablen erhalten:

http://www.microsoft.com/technet/prodtechnol/windows…

http://www.winfaq.de/faq_html/tip1051.htm

Hallo Peter,
Das Problem mit dem Set-Befehl, dass der eingesetze umgebungsvariable nur auf diesem eingabeaufförderung verfügbar ist, d.h. wenn ich neues element von der eingabeaufförderung erstelle wird diese variable nicht erkannt. oder wenn ein programm versucht auf diese umgebungsvariable zuzugreifen klappt auch nicht, weil dieser eingesetzte Umgebungsvariable nur „lokal“ und nicht für alle verfügbart.

z.b. wenn ich
set variable=C:\Programme ausfürhre und dann im explorer %variable% schreibe wird diese variable nicht erkannt im Vergleich zu den Variablen %Temp% %Windir% …

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Salü

Danke für die Ergänzung meines Postings.

Meiner Erfahrung nach, ist beim Vorghen über eine Batchdatei die Absicht die Variablen nur innerhalb einer Session bearbeiten. D.h. ich sah es als Teil des Szenarios.

Wiedemal ist auch die Sprache bzw. die korrekte Benennung die Basis für
eine Antwort. Microsoft kennt zwei Namen für das was wir umgangssprachlich „Umgebungsvariablen“ nennen:

  1. Benutzervariablen
  2. Systemvariablen

Die „Benutzervariablen“ sind die, welche innerhalb einer Session gelten.
Die anderen - von denen Du sprichst - sind die „Systemvariablen“.
Dort stellt sich mir die Frage, ist der / die Clients in einer NW-Umgebung? Wenn ja, wahrscheinlich AD? Dann ergeben sich wieder andere Möglichkeiten.
Das Tool „SETX“ das Du nennst, ist ein Weg diese zu setzen. Weitere sind:
-AUTOEXEC.NT anpassen
-Registry (z.B. mit REG.EXE)
Permanente Benutzervariablen
HKEY_CURRENT_USER\Environment
temporäre Benutzervariablen
HKEY_CURRENT_USER\Volatile Environment
Systemvariablen:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
-Änderungen für künftige neue User:
„Default-User Profil“ anpassen
-das von Dir zitierete „SETX“
oder einfach über die Systemsteuerung (manuell).

Grüsse
Peter

Salü

Kann es sein, dass Du eine Lösung für eine Lösung statt einer Problemlösung suchst?

Mein Eindruck ist, du willst abhängig vom Resultat des vorhergehenden Batches den aktuellen Batch steuern. Dafür gibt es auch andere Möglichkeiten. Abhängig davon, was der erste Batch macht, gibt es verschiedene Möglichkeiten so ein „Flag“ zu setzen.

Grüsse
Peter

Hallo Peter,

die emisten deiner Vorschläge wirken erst nach einem Neustart des Systems. Zitat dazu aus einer einschlägigen Diskussion:
>>>
Ricks Hinweis, dass systemweite Umgebungsvariablen nur in der Registry gesetzt werden können, ist vollkommen richtig. Diese Variablen wären dann jedoch erst nach einem Neustart des Systems verfügbar. damit neue Prozesse sofort auf die geänderten Werte zugreifen können, muss die Änderung mit einer WM_SETTINGCHANGE Message „bekannt“ gemacht werden. Im deutschen MSDN gibt es den Artikel „Umgebungsvariable mit Visual Basic auslesen und setzen“, der genau beschreibt, wie das gemacht wird.
http://www.microsoft.com/germany/msdn/library/visual…

Salü

Danke für die Ergänzung meines Postings.

Meiner Erfahrung nach, ist beim Vorghen über eine Batchdatei
die Absicht die Variablen nur innerhalb einer Session
bearbeiten. D.h. ich sah es als Teil des Szenarios.

Wiedemal ist auch die Sprache bzw. die korrekte Benennung die
Basis für
eine Antwort. Microsoft kennt zwei Namen für das was wir
umgangssprachlich „Umgebungsvariablen“ nennen:

  1. Benutzervariablen
  2. Systemvariablen

ja eine Systemvariable möchte ich hinzufügen(toolgestützt oder per batch)

Die „Benutzervariablen“ sind die, welche innerhalb einer
Session gelten.
Die anderen - von denen Du sprichst - sind die
„Systemvariablen“.
Dort stellt sich mir die Frage, ist der / die Clients in einer
NW-Umgebung? Wenn ja, wahrscheinlich AD? Dann ergeben sich

was meinst du mit AD?

wieder andere Möglichkeiten.
Das Tool „SETX“ das Du nennst, ist ein Weg diese zu setzen.
Weitere sind:
-AUTOEXEC.NT anpassen

ich hab die datei (AUTOEXEC.NT ) angeguckt,aber ich wusste nicht was ich da anpassen kann.

-Registry (z.B. mit REG.EXE)
Permanente Benutzervariablen
HKEY_CURRENT_USER\Environment
temporäre Benutzervariablen
HKEY_CURRENT_USER\Volatile Environment
Systemvariablen:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session
Manager\Environment

ich habe einträge in diesen registrykeys hinzugefügt (zum test nur manuell), aber ging nicht , die hinzugefügte variable wurde nicht von anderen programmen erkannt.

-Änderungen für künftige neue User:
„Default-User Profil“ anpassen

-das von Dir zitierete „SETX“

mit setx bin ich gerade am probieren.

oder einfach über die Systemsteuerung (manuell).

Grüsse
Peter