Я пытаюсь ввести значения в динамические значения, которые я получил извне пакетного скрипта. Для большей ясности вот пример:
У меня есть файл свойств с именем 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: / ...
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
Похожие вопросы
Новые вопросы
windows
Написание программного обеспечения, специфичного для операционной системы Microsoft Windows: API-интерфейсы, поведение и т. Д. ОБЩАЯ ПОДДЕРЖКА WINDOWS НЕВОЗМОЖНА. Вопросы поддержки можно задать на https://superuser.com