批处理文件从属性文件读取动态值并将值注入批处理文件外部的这些值

Batch file reading dynamic values from properties file and inject values to those values from outside the batch file

我正在尝试将值注入我从批处理脚本外部收到的动态值。 为了更清楚这里是一个例子:

我有一个名为 prop.properties 的 属性 文件,其中包含 2 个值:

prop.properties

path1=%value1%/...
path2=%value1%/...

此外,我还有一个批处理 myFile.bat 文件读取 属性 文件。

myFile.bat

echo off
set value1=%1
For /F "tokens=1* delims==" %%A IN (prop.properties) DO (
    IF "%%A"=="path1" set val1=%%B
    IF "%%A"=="path2" set val2=%%B 
)

echo %var1%
echo %var2%

所以在 运行ning myFile.bat C:

之后

我会在输出中得到: C:/... c:/...

或者如果我 运行: myFile.batD: 我会得到: D:/... D:/...

如果我明白你想做什么,那么使用延迟变量扩展:

在 prop.proerties

中将百分比更改为感叹号
path1=!value1!/...
path2=!value1!/...

然后:

@echo off
setlocal EnableDelayedExpansion

set value1=%1

For /F "tokens=1* delims==" %%A IN (prop.properties) DO (
    IF "%%A"=="path1" set var1=%%B
    IF "%%A"=="path2" set var2=%%B 
)

echo %var1%
echo %var2%

虽然还有很多things/questions。 这是一个想法:

@echo off
setlocal EnableDelayedExpansion

set value1=%1

For /F "tokens=1* delims==" %%A IN (prop.properties) DO (
    set var_%%A=%%B
)

echo %var_path1%
echo %var_path2%

set var_
for /f "tokens=2 delims==" %%a in ('set var_') do echo %%a

虽然我不知道你为什么不只是:

prop.properties
path1=/...
path2=/...


@echo off
for /F "tokens=1* delims==" %%A IN (prop.properties) DO echo %value1%%%A