本文要实现以下功能
在一个启动脚本中,需要读取指定的配置文件(properties格式),读取指定的值后,传递给相应的命令来执行,以实现可配置参数和参数统一配置的目的(避免在不同的文件中修改参数)
以下为关键的读取配置文件的批处理代码,其中使用了for循环命令:
rem 读取指定文件下的指定参数的值,并将值设制到参数中 //传入的参数 %1:哪个配置文件 %2:读取的key值 //付出 将对应key的值绑定在key上,即set key=value set b=- setlocal EnableDelayedExpansion set a=- for /f "delims== tokens=1,2" %%i in (%1) do ( set a=%%i call :trim a if !a!==%2 ( set b=%%j call :trim b break ) ) endlocal & set b=%b% set %2=%b% goto :eof
在以上批处理命令中,用到了trim函数,即一个去除一个字符串两端空格的函数。值得注意的是,由于使用了setlocal,使得要将里面的b值传递到外层的b值,在endlocal处使用了 & 符号。即endlocal & set b=%b%,这一句代码,必须连在一行,无论是将endlocal提上一行或者提下一行,均不能实现指定的效果。具体原因尚未得知。