Nach einigen Tests konnte ich bestätigen, dass Sie Windows-Umgebungsvariablen in einer Eingabeaufforderung überschreiben können, und ihre Werte werden von anderen Prozessen geerbt, die anschließend von derselben Eingabeaufforderung aus gestartet werden. Als solche haben wir die folgende Batchdatei:
REM -- Path to the directory of this script (make sure to remove ending slash) set CURRENT_DIR=%~dp0 REM -- Great example from Strawberry Perl's portable shell launcher: if not "" == "%CURRENT_DIR%" if #%CURRENT_DIR:~-1%# == #\# set CURRENT_DIR=%CURRENT_DIR:~0,-1% REM -- OVERRIDE the user environment variable to point to a portable directory set USERPROFILE=%CURRENT_DIR%\Data REM -- (Optional) Some programs do not use these environment variables ::set APPDATA=%CURRENT_DIR%\Data\AppData\Roaming>nul ::set ALLUSERSPROFILE=%CURRENT_DIR%\Data\AppData\Roaming>nul ::set PROGRAMDATA=%CURRENT_DIR%\Data\AppData\Roaming>nul REM -- Start the application start "" /D"%CURRENT_DIR%\MyAppDir" "myprogram.exe" "param 1" param_2 "param 3"
Jede Eingabeaufforderung erhält beim ersten Öffnen eine eigene Kopie der Windows-Umgebungsvariablen. Diese Werte können getrennt von anderen Eingabeaufforderungen geändert werden. Andere Prozesse bleiben von diesen Änderungen unberührt.
Andererseits können mit setx permanente Änderungen an Umgebungsvariablen vorgenommen werden .