CMD Как установить разные переменные для каждого результата поиска - PullRequest
0 голосов
/ 23 апреля 2019

Этот код исправляет это с Effective("flyer", 50%); Effective("flyer", 100%);

@For /F "Tokens=1*" %%A In ('FindStr /I "Effective(\"flyer\"," "file.cfg"^|Find /V /N ""')Do @For /F "Tokens=2Delims=,%% " %%C In ("%%B")Do @Set "flyer%%A=%%C"
@Set flyer[
@Pause

Как заставить работать с Amount(5); и другими Amount(10); С объясните, пожалуйста, если вы можете ...

1 Ответ

1 голос
/ 24 апреля 2019

Вы, очевидно, изменили бы значение 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
...