如何在批处理编程中从属性文件中读取值



我有一个属性文件,其中包含以下格式的值

variable_one = value_one
variable_two = value_two
.
.
.
.
. and so on
文件名为测试属性,位于批处理脚本的同一目录中不,我正在构建一个批处理文件,该文件应该以这样的方式运行,双击它必须将值读取到某些变量中并将其显示在屏幕上

For /F "tokens=1* delims==" "variable_one", "variable_two" IN (testing.properties) DO (
	IF "variable_one"=="variable_one" set local_variable_one=%%B
  IF "variable_two"=="variable_two" set local_variable_two=%%C
	)
	
echo "%local_variable%"
pause

属性文件真的包含=之间的空格吗?

像这样的东西将读取所有属性并仅显示其值:

@echo off
for /f "tokens=2 delims== " %%i in (testing.properties) do echo %%i
pause

其中将显示属性名称和值:

@echo off
for /f "tokens=1,* delims== " %%i in (testing.properties) do echo Property: %%i Value: %%j
pause

如果您确实想将属性设置为变量(用作可读变量)。

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,* delims== " %%i in (testing.properties) do (
    set property=%%i
    set value=%%j
    echo !property! !value!
)
pause

比较值然后设置它们本身就是另一项任务。在这里你举一个例子,所以举一个真实的例子,我们可以从那里开始工作。例如。我们可以将属性名称值设置为可用名称,而无需手动键入它:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,* delims== " %%i in (testing.properties) do (
    set %%i=%%j
    echo Property: %%i has Value: !%%i!
)
pause

甚至向字符串添加一些东西:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,* delims== " %%i in (testing.properties) do (
    set local_%%i=%%j
    echo Property: %%i has value !local_%%i! set as Variable local_%%i
)
pause

最后,为变量指定唯一名称将取决于某些搜索条件,您可能可以使用属性中的标识符。例如,对属性的一部分进行findstr,或者只是匹配数字值或属性中唯一的任何内容。

最新更新