Windows Batch循环虽然带有动态令牌计数的变量

在我的 Windows批处理文件中,我有一些带有不同数量字符串的变量.
为了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

现在我想在我的变量中使用Strings多次启动一个应用程序,我想给应用程序提供当前字符串作为参数.我试过这个:

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
        )
    )

但不幸的是,这不起作用:这是输出

Number of current String: 1 “%H “” kann syntaktisch an dieser Stelle
nicht verarbeitet werden. (%H “” can not be used syntacticaly at this
place) Number of current String: 2 “%H “” kann syntaktisch an dieser
Stelle nicht verarbeitet werden.

如何在变量“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,%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

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...