java_home how compile check and java windows command-line cmd environment-variables

java - how - Leer las variables de entorno del archivo en Windows Batch(cmd.exe)



how to compile java in cmd windows 8 (4)

Puede hacer esto en un archivo por lotes de la siguiente manera:

setlocal FOR /F "tokens=*" %%i in (''type Settings.txt'') do SET %%i java -Dsetting1=%setting1% ... endlocal

Esto lee un archivo de texto que contiene cadenas como "SETTING1 = VALUE1" y llama a SET para establecerlas como variables de entorno.

setlocal / endlocal se utilizan para limitar el alcance de las variables de entorno a la ejecución de su archivo por lotes.

El procesador de comandos CMD es realmente bastante poderoso, aunque con una sintaxis más bien bizantina.

Estoy tratando de leer variables de un archivo por lotes para su uso posterior en el script por lotes, que es un iniciador Java. Idealmente, me gustaría tener el mismo formato para el archivo de configuración en todas las plataformas (Unix, Windows) y también ser un archivo válido de Propiedades de Java. Es decir, debería verse así:

setting1=Value1 setting2=Value2 ...

¿Es posible leer tales valores como lo haría en un script de shell de Unix? El podría deberse a algo como esto:

READ settingsfile.xy java -Dsetting1=%setting1% ...

Sé que esto probablemente sea posible con SET setting1=Value1 , pero prefiero tener el mismo formato de archivo para la configuración en todas las plataformas.

Para aclarar: necesito hacer esto en el entorno de línea de comandos / lote ya que también necesito establecer parámetros que no se puedan modificar desde la JVM, como -Xmx o -classpath.


Puede pasar el archivo de propiedad como un parámetro a un programa Java (que puede iniciar el programa principal más adelante). Y luego beneficiarse del paradigma multiplataforma.


También puede acceder a las variables de entorno del sistema operativo desde un programa Java:

import java.util.Map; public class EnvMap { public static void main (String[] args) { Map<String, String> env = System.getenv(); for (String envName : env.keySet()) { System.out.format("%s=%s%n", envName, env.get(envName)); } } }


Puede ser inteligente importar únicamente variables específicas de un archivo de propiedades (que conozca con anticipación), en ese caso recomiendo una función como la siguiente:

:parsePropertiesFile set PROPS_FILE=%1 shift :propLoop if "%1"=="" goto:eof FOR /F "tokens=*" %%i in (''type %PROPS_FILE% ^| findStr.exe "%1="'') do SET %%i shift GOTO propLoop goto:eof

Que se llamaría por call:parsePropertiesFile props.properties setting1 setting2 para establecer las variables setting1 y setting2