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

У меня есть файл свойств с именем 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%

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

Я получу на выходе: C: / ... c: / ...

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

0
Yo Al 22 Окт 2019 в 20:03

1 ответ

Лучший ответ

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

Замените процент на восклицательный знак в prop.properties

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
0
avery_larry 22 Окт 2019 в 17:38