在我的Windowsbatch file中,我有一些variables与不同数量的string。 对于exapmle:
set string="-start" "-end someOption"
我用下面的方法计算一个string的数字:
Set count=0 For %%j in (%string%) Do Set /A count+=1 echo.Total count: %count%
输出将是:
Total count: 2
现在我想开始一个应用程序多次,因为我的variables中有string,我想给应用程序的当前string作为参数。 我试过这个:
FOR /L %%H IN (1,1,%COUNT%) DO ( echo %%H FOR /F "tokens=%%H " %%I IN ("%string%") Do ( echo %%I rem java -jar app.jar %%I ) )
但不幸的是这不起作用:这就是输出:
当前string的数量:1“%H”“kann syntaktisch an dieser Stelle nicht verarbeitet werden。(%H”“在这个地方不能使用语法)当前string的数量:2”%H“”kann syntaktisch an dieser Stelle nicht verarbeitet werden。
我怎样才能通过我的variables“string”中的两个string循环?
您不能在FOR/F
的选项字段中使用FOR参数或延迟的扩展变量。
但是你可以创建一个函数并使用百分比扩展。
分割是delim字符的作用,它是默认的空间和制表符,它们也在引用的参数中工作。
所以我把你的分隔符改为分号,然后就可以了。
set string="-start";"-end someOption" set count=0 For %%j in (%string%) Do Set /A count+=1 echo.Total count: %count% FOR /L %%H IN (1,1,%COUNT%) DO ( echo %%H call :myFunc %%H ) exit /b :myFunc FOR /F "tokens=%1 delims=;" %%I IN ("%string%") Do ( echo %%~I rem java -jar app.jar %%I ) exit /b
好吧,我会尽量使它更清楚。
上面的答案帮了我一点时间。
正如我在我的问题开始时显示的,我有以下变量:
set string="-start" "-end someOption"
我想循环这个变量,所以最后我有两个完整的参数:第一个:
"-start"
第二个:
"-end someOption"
但是在调用函数之后,回声是:
"-start"
(这是正确的)和
"-end
/这是错误的,因为他把字符串切成空格。
但最后开始我的应用程序,我需要两个正确的参数。 他们应该看起来像这样:第一个参数:
-start
第二个参数有一个选项:
-end someoption
所以我需要消除引号,第二个参数不能在白标处分开。