从 Windows 批处理 (cmd.exe) 中的文件中读取环境变量

我正在尝试从批处理文件中读取变量,以便以后在批处理脚本(Java启动器)中使用。理想情况下,我希望所有平台(Unix,Windows)上的设置文件具有相同的格式,并且也是有效的Java属性文件。也就是说,它应该看起来像这样:

setting1=Value1
setting2=Value2
...

是否可以像在Unix shell脚本中那样读取这些值?该值应如下所示:

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

我知道这可能是可能的,但我真的宁愿在所有平台上的设置使用相同的文件格式。SET setting1=Value1

澄清一下:我需要在命令行/批处理环境中执行此操作,因为我还需要设置无法在JVM中更改的参数,例如-Xmx或-classpath。


答案 1

您可以在批处理文件中执行此操作,如下所示:

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

这将读取包含“SET1=VALUE1”等字符串的文本文件,并调用 SET 将其设置为环境变量。

setlocal/endlocal 用于将环境变量的作用域限制为批处理文件的执行。

CMD命令处理器实际上非常强大,尽管具有相当拜占庭式的语法。


答案 2

您可以将属性文件作为参数传递给 Java 程序(该程序稍后可能会启动主程序)。然后从多平台范式中受益。


推荐