Возможно ли преобразовать ваш пакетный скрипт в скрипт PowerShell? Если вы запустите файл bat, он будет запущен в отдельном сеансе, который не изменяет переменные env PowerShell.
Вы можете работать с переменными env очень плавно:
PS> Get-ChildItem env:
Name Value
---- -----
ALLUSERSPROFILE C:\ProgramData
APPDATA C:\Users\xyz\AppData\Roaming
CommonProgramFiles C:\Program Files (x86)\Common Files
CommonProgramFiles(x86) C:\Program Files (x86)\Common Files
CommonProgramW6432 C:\Program Files\Common Files
COMPUTERNAME xyz
ComSpec C:\Windows\system32\cmd.exe
DXSDK_DIR D:\prgs\dev\Microsoft DirectX SDK (August 2009)\
FP_NO_HOST_CHECK NO
HOMEDRIVE Z:
HOMEPATH \
...
PS> Get-Item env:path
Name Value
---- -----
Path c:\dev\CollabNet\SubversionClient;C:\Windows\system32;...
Или даже (намного короче, возвращает только строку):
PS> $env:path
c:\dev\CollabNet\Subversion Client;C:\Windows\system32;...
Вы можете изменить путь к среде следующим образом:
PS> $env:path += ";c:\mydir"
И вы даже можете установить переменные окружения на уровне машины следующим образом:
# fist arg = env variable name, second = value, third = level, available are 'Process', 'User', 'Machine'
PS> [Environment]::SetEnvironmentVariable('test', 'value', 'machine')