Установите постоянную переменную среды из cmd.исполняемый



Я должен установить переменные среды на разных машинах windows, но я не хочу беспокоиться об их изменении вручную, перейдя на экран свойств "Мой компьютер"



Я хочу сделать это из командной строки, с помощью пакетного файла. Насколько я понимаю, использование set изменит только переменную для процессов, которые я вызову в командном окне.



Я хочу установить его определенно, поэтому позже, при запуске нового процесса, он будет использовать эти новые настройки I поставили. Есть ли способ сделать это из командной строки ?

611   3  

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

    Ничего не найдено.