Вы, очевидно, изменили бы значение Str
в Find
с помощью FindStr
, то есть измените "Effective(\"flyer\","
на "Amount("
, а затем измените свои Delim
iters с , % до () .
@For /F "Tokens=1*" %%A In ('FindStr /I "Amount(" "file.cfg"^|Find /V /N ""')Do @For /F "Tokens=2Delims=() " %%C In ("%%B")Do @Set "amount%%A=%%C"
@Set amount[
@Pause
Поскольку это один из нескольких вопросов, относящихся к одной и той же задаче, я настоятельно рекомендую открыть окно командной строки, ввести For /?
, FindStr /?
, Find /?
и Set /?
и прочитать вывод от каждого.
В качестве дополнительного примечания вы можете еще больше сократить код в этом конкретном случае и использовать только Find
:
@For /F "Tokens=1-3Delims=[]() " %%A In ('Find /I /N "Amount("^<"file.cfg"')Do @Set "%%B[%%A]=%%C"
@Set Amount[
@Pause
Код Find
будет легко настроить для поиска ConstructionTime(
:
@For /F "Tokens=1-3Delims=[]() " %%A In ('Find /I /N "ConstructionTime("^<"file.cfg"')Do @Set "%%B[%%A]=%%C"
@Set ConstructionTime[
@Pause