Tengo para establecer variables de entorno en diferentes máquinas con windows, pero no quiero ser molestado en cambiar manualmente por llegar a la pantalla de propiedades de «Mi pc»

Quiero hacerlo desde la línea de comandos, con un archivo de proceso por lotes. Como tengo entendido, el uso de set que sólo el cambio de la variable para los procesos voy a llamar en la ventana de comandos.

Quiero establecer definitivamente, así que más tarde, cuando se ejecuta un nuevo proceso, el uso de los nuevos ajustes que me han puesto. Es allí una manera de hacerlo desde la línea de comandos ?

  • ¿Cuál es el punto de configuración desde la línea de comandos si van permanente? Usted no tendrá que volver a hacerlo.
  • Sí, pero tengo que hacerlo en varios equipos, por lo que se ejecuta el script me va a ahorrar algo de tiempo.
  • Ok, en ese caso, usted puede configurar su env en un equipo y hacer una exportación de las entradas se describe a continuación y que tienen una .archivo reg, si SETX isnt disponible para usted.
  • Eso es lo que he hecho. Gracias.
  • RE: ‘¿Cuál es el punto de configuración desde la línea de comandos… » Donde yo trabajo hay una constante exigencia de un número de la persistencia de las variables ambientales para diferentes valores para probar y desarrollar diferentes versiones del software. La concesión de licencias significa que no se puede hacer de ninguna otra forma (por ejemplo, correr una máquina virtual) así que nuestro único recurso es el uso de SETX en una secuencia de comandos por lotes. El uso de .reg es tan buena como su más difícil documento/ver exactamente lo que está pasando
InformationsquelleAutor Arthur | 2011-05-05

5 Comentarios

  1. 170

    Utilizar el SETX comando (nota de la ‘x’ sufijo) para el conjunto de variables que persisten después de la ventana de cmd se ha cerrado.

    Por ejemplo, para establecer un env var «foo» con valor de «bar»:

    setx foo bar
    

    Aunque merece la pena leer las «notas» que se muestran si usted imprimir el uso (setx /?), en particular:

    2) En un sistema local, las variables creadas o modificadas por esta herramienta estará disponible en el futuro de comandos de windows, pero no en el actual CMD.exe ventana de comandos.

    3) En un sistema remoto, las variables creadas o modificadas por esta herramienta estará disponible en el siguiente inicio de sesión.

    En PowerShell, la [Medio Ambiente]::SetEnvironmentVariable comando.

    • Parece que SETX sólo está disponible en windows XP SP2
    • Funcionó en Windows 7 para mí. ¿Qué versión de Windows estás usando?
    • Estoy en windows xp SP3
    • Usted puede obtener desde el Kit de Recursos, entonces.
    • Tenga cuidado con SETX, es truncar la variable longitud de 1024 char… muy peligroso a la hora de manipular %path%.
    • Esta es la respuesta correcta! Nota sólo es diferente con PowerShell.
    • con Power Shell sólo puede [Environment]::SetEnvironmentVariable('PATH', "Whatever you need it to be", "Machine"), consulte msdn.microsoft.com/en-us/library/96xafkes(v=vs 110).aspx
    • Cómo quitar?
    • Se puede establecer en blanco con SETX, no quitar, aunque. Para obtener más información, consulte aquí y aquí
    • Uso /M para hacer que una variable del sistema

  2. 18

    La Documentación de MSDN para las variables de entorno dice qué hacer:

    Agregar mediante programación o modificar variables de entorno del sistema, añadir a la HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Entorno clave del registro, la emisión de WM_SETTINGCHANGE mensaje con lParam conjunto a la cadena de «medio Ambiente». Esto permite que las aplicaciones, tales como la shell, para recoger sus actualizaciones.

    Usted, por supuesto, necesita derechos de administrador para hacer esto. No conozco ninguna manera de transmitir un mensaje de windows de por lotes de Windows así que usted tendrá que escribir un pequeño programa para hacer esto.

    • Ok, así que teniendo en cuenta su solución, he creado un registro (.reg) archivo que contiene las variables de entorno, quiero añadir/cambiar. Voy a continuación, ejecute este archivo en todos los Pc de destino. Yo realmente no necesita para enviar un mensaje de windows, como me acaba de reiniciar la aplicación que va a ser afectada. Gracias.
    • Voy a agregar tu otra respuesta aquí, como era exactamente lo que estaba buscando cuando me topé con esta pregunta: stackoverflow.com/a/19705691/3543437
    • Así que ¿por qué no setx por abajo?
  3. 2
    ' 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
    
    • Usted debe considerar la adición de un poco de contexto o una explicación para acompañar a su código.
    • Potente pieza de código +1. Funciona en XP sin setx (y sin posibilidad de instalarlo). Simple de usar (en mi caso): wsh.Environment("user").Item("myVar") = "my value"
    • Ya que nadie se ha tomado la molestia, para uso en XP (sin Kit de Recursos o setx necesario), para lograr {set foo=bar} para todas las (otras) DOS ventanas: 1. guardar código anterior como SetVar.vbs 2. setvar.vbs conjunto del sistema foo «bar» de la Nota, el corriente ventana de ms-DOS no obtener FOO de este. Cuestión conjunto de foo=bar para lograr que
    • Tenga en cuenta también, este sobrevive el reinicio (cuando se utiliza el sistema de parm)
  4. 0

    De hecho se fija TEST_VARIABLE=valor de las obras para el proceso actual sólo, así que SETX es necesario. Un ejemplo rápido para almacenar de forma permanente una variable de entorno a nivel de usuario.

    1. En cmd, SETX TEST_VARIABLE etc. No se aplica todavía (echo %TEST_VARIABLE% muestra %TEST_VARIABLE%,
    2. Comprobación rápida: abrir cmd, echo %TEST_VARIABLE% muestra etc.
    3. GUI de verificación: Propiedades del Sistema -> Avanzado> variables de Entorno -> variables de Usuario para -> usted debe ver Varible TEST_VARIABLE con valor etc.
  5. 0
    :: Sets environment variables for both the current `cmd` window 
    ::   and/or other applications going forward.
    :: I call this file keyz.cmd to be able to just type `keyz` at the prompt 
    ::   after changes because the word `keys` is already taken in Windows.
    
    @echo off
    
    :: set for the current window
    set APCA_API_KEY_ID=key_id
    set APCA_API_SECRET_KEY=secret_key
    set APCA_API_BASE_URL=https://paper-api.alpaca.markets
    
    :: setx also for other windows and processes going forward
    setx APCA_API_KEY_ID     %APCA_API_KEY_ID%
    setx APCA_API_SECRET_KEY %APCA_API_SECRET_KEY%
    setx APCA_API_BASE_URL   %APCA_API_BASE_URL%
    
    :: Displaying what was just set.
    set apca
    
    :: Or for copy/paste manually ...
    :: setx APCA_API_KEY_ID     'key_id'
    :: setx APCA_API_SECRET_KEY 'secret_key'
    :: setx APCA_API_BASE_URL   'https://paper-api.alpaca.markets'
    

Dejar respuesta

Please enter your comment!
Please enter your name here