Пакетный файл читает динамические значения из файла свойств и вводит значения в эти значения вне пакетного файла - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь внедрить значения в динамические значения, полученные извне пакетного сценария. Чтобы быть более понятным, вот пример:

У меня есть файл свойств с именем prop.properties, который содержит 2 значения:

prop.properties

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

в дополнение к Iесть пакетный файл 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%

, поэтому после запуска myFile.bat C:

я попаду ввывод: C: / ... c: /...

или, если я запущу: myFile.bat D: я получу: D: / ... D: /...

1 Ответ

0 голосов
/ 22 октября 2019

Если я понимаю, что вы пытаетесь сделать, тогда используйте задержанное расширение переменной:

Измените процент на восклицательный знак в 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%

Хотя есть много других вещей / вопросов. Вот одна идея:

@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
...