我正在尝试从批处理文件中读取变量,以供以后在批处理脚本(这是Java启动器)中使用。理想情况下,我希望所有平台(Unix,Windows)上的设置文件具有相同的格式,并且也是一个有效的Java属性文件。也就是说,它应如下所示:
setting1=Value1 setting2=Value2 ...
是否可以像在Unix shell脚本中一样读取这些值?罐子应该看起来像这样:
READ settingsfile.xy java -Dsetting1=%setting1% ...
我知道可以使用来实现SET setting1=Value1,但是我真的希望所有平台上的设置都使用相同的文件格式。
SET setting1=Value1
需要说明的是:我需要在命令行/批处理环境中执行此操作,因为我还需要设置无法在JVM中更改的参数,例如-Xmx或-classpath。
您可以在批处理文件中执行以下操作:
setlocal FOR /F "tokens=*" %%i in ('type Settings.txt') do SET %%i java -Dsetting1=%setting1% ... endlocal
这将读取包含诸如“ SETTING1 = VALUE1”之类的字符串的文本文件,并调用SET将其设置为环境变量。
setlocal / endlocal用于将环境变量的范围限制为批处理文件的执行。
CMD命令处理器实际上是相当强大的,尽管具有相当拜占庭式的语法。