具有动态令牌计数的Windows批处理循环变量
在我的Windows批处理文件中,我有一些带有不同数量字符串的变量。 例如:具有动态令牌计数的Windows批处理循环变量,windows,loops,dynamic,batch-file,token,Windows,Loops,Dynamic,Batch File,Token,在我的Windows批处理文件中,我有一些带有不同数量字符串的变量。 例如: set string="-start" "-end someOption" 我用以下方法计算字符串的数字: Set count=0 For %%j in (%string%) Do Set /A count+=1 echo.Total count: %count% 产出将是: Total count: 2 现在,我希望启动一个应用程序的次数与变量中有字符串的次数相同,并且希望将当前字符串作为参数提供给应用程序。
set string="-start" "-end someOption"
我用以下方法计算字符串的数字:
Set count=0
For %%j in (%string%) Do Set /A count+=1
echo.Total count: %count%
产出将是:
Total count: 2
现在,我希望启动一个应用程序的次数与变量中有字符串的次数相同,并且希望将当前字符串作为参数提供给应用程序。我试过这个:
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
)
)
但不幸的是,这不起作用:这就是输出:
当前字符串的数目:1“%H”kann syntaktisch an dieser Stelle
nicht verarbeitet werden.(%H)此时不能在语法上使用
位置)当前字符串的编号:2“%H”kann syntaktisch an dieser
斯泰尔·尼赫特·韦尔贝特·韦登
如何循环变量“string”中的两个字符串?您不能在/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"
(这是正确的)
及
/这是错误的,因为他在空白处撕开了字符串
但在启动应用程序的最后,我需要两个正确的参数。它们应该是这样的:
第一个参数:
-start
第二个参数有一个选项:
-end someoption
所以我需要去掉引号,第二个参数不能在白点处分开。好的,非常感谢。这个想法对我帮助很大,但不幸的是它仍然不完美。因为当我执行它时,它会显示
1”-start“2”-endt
第一个参数“-start”是perfekt,因为我可以直接在我的应用程序中使用这个参数,但是在第二个参数中缺少它的选项应该是-end someOption
我不明白你想说什么。也许你可以用一些示例编辑你的问题现在我明白了!我更改了答案,也删除了附加的引号
-end someoption