CMD如何为每个搜索结果设置不同的变量

CMD How to set different variables for each search result

此代码通过 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); 一起使用 如果可以请解释一下...

你显然会用 FindStrString 修改为 Find,即将 "Effective(\"flyer\"," 更改为 "Amount(",然后调整你的 Delim,% () .

@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

由于这是与同一任务相关的几个问题之一,我强烈建议您打开命令提示符 window,输入 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