2008-12-01 19 views
7

Estoy cambiando entre diferentes SDK de Java (1.4.2, 1.5.0 y 1.6.0) para varios proyectos. Me gustaría establecer la variable de entorno JAVA_HOME en mi máquina con Windows XP sin pasar por el tedioso Mi PC -> Avanzado -> [Seleccionar variable del sistema] -> Editar -> Aceptar -> Ok¿Cómo configuro una variable de entorno del sistema en Windows XP sin utilizar el Diálogo "Mi PC"

¿Es posible hacer esto? desde la línea de comandos, o hay una utilidad que pueda hacer esto?

(Tenga en cuenta que no me estoy refiriendo al comando "SET" del archivo por lotes estándar - Deseo establecer la variable de entorno "globalmente", no solo durante la vida útil de una ventana de consola).

+0

Aunque estoy de acuerdo en que su pregunta puede ser de interés para los programadores, todavía no creo que esté relacionada con la programación. Es una pregunta de sistema operativo no una pregunta de programación. Es completamente posible que alguien no esté de acuerdo conmigo y vuelva a abrir la pregunta. – EBGreen

+3

infierno sí, esto es "programación relacionada" o no sabes lo que significa SDK? – Kevin

+0

No estoy de acuerdo con programación no relacionada. Vea la respuesta de Patrick que ha escrito un programa para resolver el problema. Y en realidad no hay una funcionalidad integrada del sistema operativo Windows para resolverlo ;-) –

Respuesta

6

De http://vlaurie.com/computers2/Articles/environment.htm:

Con la herramienta add-on Setx.exe

No es parte de la instalación de Windows XP estándar, pero una llamada Setx.exe herramienta de línea de comandos se incluye en el Windows XP Service Pack 2 Support Tools. Esta herramienta amplía el comando set para que los cambios permanentes en puedan realizarse las variables de entorno. Por ejemplo, para agregar una carpeta C: \ Nueva carpeta a la ruta, el comando sería ser setx ruta "% PATH%; C: \ Nueva carpeta"

1

Aquí hay algo de VBScript que uso para esto:

set args = WScript.Arguments 
Set objShell = WScript.CreateObject("WScript.Shell") 
Set colSystemEnvVars = objShell.Environment("System") 
Set colUserEnvVars = objShell.Environment("User") 

' Parse args 
select case args.Count 
case 0, 1, 2 
    help 
case 3 
    sVariable = args(0) 
    sValue = args(1) 
    sScope = UCase(args(2)) 
    sMode = "" 
case 4 
    sVariable = args(0) 
    sValue = args(1) 
    sScope = UCase(args(2)) 
    sMode = UCase(args(3)) 
end select 

select case sScope 
    case "S" 
     if sMode = "A" then 
      sValue = colSystemEnvVars(sVariable) & sValue 
     end if 
     colSystemEnvVars(sVariable) = sValue 
    case "U" 
     if sMode = "A" then 
      sValue = colUserEnvVars(sVariable) & sValue 
     end if 
     colUserEnvVars(sVariable) = sValue 
    case else 
     help 
end select 

WScript.Quit 

'****************************************************************************** 
Sub help() 
    WScript.Echo "" 
    WScript.Echo "Create or update an environment variable." 
    WScript.Echo "" 
    WScript.Echo "usage:" 
    WScript.Echo "======" 
    WScript.Echo "cscript SetVar.vbs variable value {S|U} [A]" 
    WScript.Echo "" 
    WScript.Echo "eg:" 
    WScript.Echo "==="  
    WScript.Echo "cscript SetVar.vbs MYVAR 'Hello world' U" 
    WScript.Echo "cscript SetVar.vbs PATH 'C:\MyPath' S A" 

    WScript.Quit 
End Sub 

El alcance puede ser 'S'ystem o' U'ser . El último argumento, 'A', si está presente, agrega el valor al valor existente de la variable (útil para agregar un directorio a la variable del sistema PATH).

Las variables se mantendrán, pero tendrá que cerrarlas y luego volver a abrir una consola para usarlas. Normalmente ejecuto esto desde el diálogo "Ejecutar ...", luego abro una consola.

Cuestiones relacionadas