Установите постоянную переменную среды из cmd.исполняемый
Я должен установить переменные среды на разных машинах windows, но я не хочу беспокоиться об их изменении вручную, перейдя на экран свойств "Мой компьютер"
Я хочу сделать это из командной строки, с помощью пакетного файла. Насколько я понимаю, использование set изменит только переменную для процессов, которые я вызову в командном окне.
Я хочу установить его определенно, поэтому позже, при запуске нового процесса, он будет использовать эти новые настройки I поставили. Есть ли способ сделать это из командной строки ?
3 ответов:
The документация MSDN для переменных среды говорит вам, что делать:
программно добавить или изменить системные переменные среды, добавьте их в HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment раздел реестра, а затем транслировать WM_SETTINGCHANGE сообщение с lParam, установленным в строку "Environment". Это позволяет приложениям, таким как оболочка, забрать ваш новинки.
для этого Вам, конечно, понадобятся права администратора. Я не знаю, как транслировать сообщение windows из пакета Windows, поэтому вам нужно будет написать небольшую программу для этого.
использовать команда SETX (обратите внимание на суффикс 'x') для установки переменных, которые сохраняются после закрытия окна cmd.
хотя стоит прочитать "заметки", которые отображаются, если вы печатаете использование (
setx /?), в частности:2) в локальной системе переменные, созданные или измененные этим инструментом, будут доступны в будущих командных окнах, но не в текущем CMD.окно командной строки exe-файла.
3) на удаленной системе, переменные созданный или измененный этим средством будет доступен в следующем сеансе входа в систему.
в PowerShell,[Окружающая Среда]:: SetEnvironmentVariable.
' SetVar.vbs Sub sety(wsh, action, typey, vary, value) Dim wu Set wu = wsh.Environment(typey) wui = wu.Item(vary) Select Case action Case "ls" WScript.Echo wui Case "del" On Error Resume Next wu.remove(vary) On Error Goto 0 Case "set" wu.Item(vary) = value Case "add" If wui = "" Then wu.Item(vary) = value ElseIf InStr(UCase(";" & wui & ";"), UCase(";" & value & ";")) = 0 Then wu.Item(vary) = value & ";" & wui End If Case Else WScript.Echo "Bad action" End Select End Sub Dim wsh, args Set wsh = WScript.CreateObject("WScript.Shell") Set args = WScript.Arguments Select Case WScript.Arguments.Length Case 3 value = "" Case 4 value = args(3) Case Else WScript.Echo "Arguments - 0: ls,del,set,add; 1: user,system, 2: variable; 3: value" value = "```" End Select If Not value = "```" Then ' 0: ls,del,set,add; 1: user,system, 2: variable; 3: value sety wsh, args(0), args(1), UCase(args(2)), value End If
Comments