Discussion:
Umgebungsvariable per Batch dauerhaft aendern
(zu alt für eine Antwort)
Helmut Hullen
2011-11-12 13:22:00 UTC
Permalink
Hallo alle miteinander,

ich möchte gern per Batchdatei einige Umgebungsvariablen für einen
eingeloggten User dauerhaft (für diese Sitzung) ändern; Beispiel:

vorher:

USERNAME=helmut
USERPROFILE=d:\Dokumente und Einstellungen\helmut

Dann nehme ich Verbindung auf zu einem Samba-Server, auf dem ich den
Account "hhullen" habe, und deshalb sollte (wenn möglich) auch lokal
einiges für diese Sitzung dauerhaft geändert werden:

USERNAME=hhullen
USERPROFILE=\\%Server%\hhullen\Win2K

Geht das überhaupt?
Wenn ja: wie?

Bisher habe ich nur sehen können, dass diese Änderung solange bestehen
bleibt, wie ich in dem Eingabeaufforderungsfenster bin. Wenn ich es
schliesse und anschliessend neu öffne, dann gelten wieder die originalen
Daten.

------------------------

Für Windows 9x gab es dafür mal das Programm "winset" ...

Viele Gruesse!
Helmut
Rainald Taesler
2011-11-12 15:29:11 UTC
Permalink
Post by Helmut Hullen
ich möchte gern per Batchdatei einige Umgebungsvariablen für einen
USERNAME=helmut
USERPROFILE=d:\Dokumente und Einstellungen\helmut
Dann nehme ich Verbindung auf zu einem Samba-Server, auf dem ich den
Account "hhullen" habe, und deshalb sollte (wenn möglich) auch lokal
USERNAME=hhullen
USERPROFILE=\\%Server%\hhullen\Win2K
Geht das überhaupt?
Wenn ja: wie?
Über Systemsteuerung -> System die "erweiterten" Einstellungen aufrufen
und dort den Button "Umgebungsvariablen".
Dort dann die Werte für den aktuellen User setzen (oberes Fenster).
Post by Helmut Hullen
Bisher habe ich nur sehen können, dass diese Änderung solange bestehen
bleibt, wie ich in dem Eingabeaufforderungsfenster bin. Wenn ich es
schliesse und anschliessend neu öffne, dann gelten wieder die
originalen Daten.
Wenn als Umgebungsvariable gesetzt, bleibt das (jeweils für den User).

Rainald
P.S. Genauer geht leider nicht, da Du die Windows-Version verschwiegen
hast :-( :-(
Helmut Hullen
2011-11-12 16:08:00 UTC
Permalink
Hallo, Rainald,
Post by Rainald Taesler
Post by Helmut Hullen
ich möchte gern per Batchdatei einige Umgebungsvariablen für einen
[...]
Post by Rainald Taesler
Post by Helmut Hullen
Geht das überhaupt?
Wenn ja: wie?
Über Systemsteuerung -> System die "erweiterten" Einstellungen
aufrufen und dort den Button "Umgebungsvariablen".
Dort dann die Werte für den aktuellen User setzen (oberes Fenster).
In einer Batchdatei?
Post by Rainald Taesler
P.S. Genauer geht leider nicht, da Du die Windows-Version
verschwiegen hast :-( :-(
Windows 2000, Windows XP, Windows Vista, Windows 7 (diverse Clients).

Viele Gruesse!
Helmut
Rainald Taesler
2011-11-12 16:47:16 UTC
Permalink
Post by Helmut Hullen
Hallo, Rainald,
Post by Rainald Taesler
Post by Helmut Hullen
ich möchte gern per Batchdatei einige Umgebungsvariablen für einen
[...]
Post by Rainald Taesler
Post by Helmut Hullen
Geht das überhaupt?
Wenn ja: wie?
Über Systemsteuerung -> System die "erweiterten" Einstellungen
aufrufen und dort den Button "Umgebungsvariablen".
Dort dann die Werte für den aktuellen User setzen (oberes Fenster).
In einer Batchdatei?
Nein, natürlich nicht in einer Batchdatei.
Ich dachte, Du wolltest das verstetigen :-(

Wenn in einer BAT-Datei sollte Du das, was Du momentan händisch machst,
in eine Datei schreiben (jeweils mit Variablen, also "set name =
%hullen%") und dann
vom Command-Prompt aus arbeiten.

Natürlich solltest Du in einer Batch-Datei die existierende
Umgebungsvariablen "USERNAME" und "USERPROFILE" nicht verwenden.
Post by Helmut Hullen
Post by Rainald Taesler
P.S. Genauer geht leider nicht, da Du die Windows-Version
verschwiegen hast :-( :-(
Windows 2000, Windows XP, Windows Vista, Windows 7 (diverse Clients).
OK, alles klar.

Rainald
Helmut Hullen
2011-11-12 18:53:00 UTC
Permalink
Hallo, Rainald,
Post by Rainald Taesler
Post by Helmut Hullen
ich möchte gern per Batchdatei einige Umgebungsvariablen für einen
[...]
Post by Rainald Taesler
Wenn in einer BAT-Datei sollte Du das, was Du momentan händisch
machst, in eine Datei schreiben (jeweils mit Variablen, also "set
name = %hullen%") und dann
vom Command-Prompt aus arbeiten.
Aber (wie bereits geschrieben) das scheint nur in dieser Batchdatei und
in davon aufgerufenen Programmen zu gelten.

Viele Gruesse!
Helmut
Uwe Schröder
2011-11-12 20:01:05 UTC
Permalink
Post by Helmut Hullen
Aber (wie bereits geschrieben) das scheint nur in dieser Batchdatei und
in davon aufgerufenen Programmen zu gelten.
Ich würde nicht einmal darauf wetten, daß die Umgebungsvariablen
überhaupt von irgendwelchen Programmen ausgewertet werden außer von
anderen Batchdateien. Der normale Weg für eine Anwendung wäre nämlich,
den Pfad zu den Standardverzeichnissen per SHGetKnownFolderPath() über
die Windows-ShellAPI beim System zu erfragen. Es ist ja z.B. gar nicht
notwendig, daß "Eigene Dokumente" ein Unterverzeichnis von
%USERPROFILE% ist.

http://msdn.microsoft.com/en-us/library/bb762188%28v=VS.85%29.aspx

usch
Rüdiger Rösler
2011-11-13 10:45:49 UTC
Permalink
Post by Helmut Hullen
Bisher habe ich nur sehen können, dass diese Änderung solange bestehen
bleibt, wie ich in dem Eingabeaufforderungsfenster bin. Wenn ich es
schliesse und anschliessend neu öffne, dann gelten wieder die
originalen Daten.
------------------------
Für Windows 9x gab es dafür mal das Programm "winset" ...
Unter XP gibt es dafür in den "Support Tools" das Programm setx.exe:

| C:\>setx /?
|
| SETX: This program is used to set values in the environment
| of the machine or currently logged on user using one of three modes.
[...]

Du kannst aber auch VBSript oder die PowerShell dafür nehmen. Das
folgende Skript sollte nur mit CScript.exe ausgeführt werden, sonst
klickst Du Dich tot:

'########################## Umgebung.vbs ##############################
' Skript vom Freitag, 14. November 2008, 14:03:31 von hrr
Set wshShell = CreateObject("WScript.Shell")

For Each strEnv in Array("PROCESS", "SYSTEM", "USER", "VOLATILE")
WScript.Echo vbCRLF & vbCRLF & strEnv & "-Environment:" & vbCRLF
For Each str In wshShell.Environment(strEnv)
WScript.Echo str
Next
Next

str = WScript.ScriptName ' Name der Umgebungsvariablen
Set wshUEnv = wshShell.Environment("User")

WScript.Echo vbCRLF
WScript.Echo "Create variable '" & str & "' in Environment 'User':"
wshUEnv(str) = CStr(Date) ' Wert der Umgebungsvariablen zuweisen
WScript.Echo vbCRLF & str & "=" & wshUEnv(str)

wshUEnv.Remove str ' Umgebungsvariable entfernen
If Len(wshUEnv(str)) = 0 Then
WScript.Echo "Environment variable '" & str & "' was removed."
Else
WScript.Echo "Environment variable '" & str & "' wasn't removed."
End If
'########################## Umgebung.vbs ##############################
--
ЯR
Winfried Sonntag
2011-11-13 11:18:15 UTC
Permalink
Ab VISTA ist das Tool bereits im OS enthalten.
Post by Rüdiger Rösler
| C:\>setx /?
|
| SETX: This program is used to set values in the environment
| of the machine or currently logged on user using one of three modes.
[...]
Du kannst aber auch VBSript oder die PowerShell dafür nehmen. Das
folgende Skript sollte nur mit CScript.exe ausgeführt werden, sonst
Du brauchst doch nur die Zeilen mit den Messageboxen
auszukommentieren, schon ist kein klicken mehr nötig.
Post by Rüdiger Rösler
'########################## Umgebung.vbs ##############################
' Skript vom Freitag, 14. November 2008, 14:03:31 von hrr
Set wshShell = CreateObject("WScript.Shell")
For Each strEnv in Array("PROCESS", "SYSTEM", "USER", "VOLATILE")
WScript.Echo vbCRLF & vbCRLF & strEnv & "-Environment:" & vbCRLF
For Each str In wshShell.Environment(strEnv)
WScript.Echo str
Next
Next
str = WScript.ScriptName ' Name der Umgebungsvariablen
Set wshUEnv = wshShell.Environment("User")
WScript.Echo vbCRLF
WScript.Echo "Create variable '" & str & "' in Environment 'User':"
wshUEnv(str) = CStr(Date) ' Wert der Umgebungsvariablen zuweisen
WScript.Echo vbCRLF & str & "=" & wshUEnv(str)
wshUEnv.Remove str ' Umgebungsvariable entfernen
If Len(wshUEnv(str)) = 0 Then
WScript.Echo "Environment variable '" & str & "' was removed."
Else
WScript.Echo "Environment variable '" & str & "' wasn't removed."
End If
'########################## Umgebung.vbs ##############################
Servus
Winfried
--
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
GPO's: http://www.gruppenrichtlinien.de
Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
Reg2xml: http://www.reg2xml.com - Registry Export File Converter
Helmut Hullen
2011-11-13 11:46:00 UTC
Permalink
Hallo, Winfried,
Post by Winfried Sonntag
Ab VISTA ist das Tool bereits im OS enthalten.
Danke - das erspart mir einige Sucherei ...

Viele Gruesse!
Helmut
Helmut Hullen
2011-11-13 12:02:00 UTC
Permalink
Hallo, Rüdiger,
Post by Rüdiger Rösler
Post by Helmut Hullen
Bisher habe ich nur sehen können, dass diese Änderung solange
bestehen bleibt, wie ich in dem Eingabeaufforderungsfenster bin.
Wenn ich es schliesse und anschliessend neu öffne, dann gelten
wieder die originalen Daten.
------------------------
Für Windows 9x gab es dafür mal das Programm "winset" ...
| C:\>setx /?
|
| SETX: This program is used to set values in the environment
| of the machine or currently logged on user using one of three
modes. [...]
Danke - das sollte vielleicht schon reichen, zusammen mit

http://ss64.com/nt/setx.html
http://support.microsoft.com/?kbid=104011
Post by Rüdiger Rösler
Du kannst aber auch VBSript oder die PowerShell dafür nehmen.
Und noch mal vielen Dank!

Viele Gruesse!
Helmut

Loading...