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

时间:2019-01-11 05:45:36

标签: batch-file properties

我有一个属性文件,其中包含

格式的值

variable_one = value_one
variable_two = value_two
.
.
.
.



. and so on
文件名称为testing.properties,位于批处理脚本的同一目录中 不,我正在构建一个批处理文件,双击该批处理文件必须将值读入一些变量并将其显示在屏幕上

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

1 个答案:

答案 0 :(得分:1)

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

类似这样的内容将读取所有属性并仅显示其值:

@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的操作,或者仅匹配数字值或属性中唯一的任何内容。