我有一个类似的问题,就像我在这里问过的:Nested loop
但是,我仍然没有解决似乎很少的“问题”。我已经使用[FindStr][2]
实现了提到的解决方案,但是运行时间比没有FindStr的要长得多。所以我想使用[]
IF not "!stringToTest:!searchValue!=!"=="!stringToTest!" echo Something
下面我发布一些可运行的代码。一开始,我只是将数组设置为要搜索的值,然后再添加一些示例“文本”,在这些文本中,我要搜索预先设置的搜索值。我的策略:
所以我有两个嵌套循环。在循环的每个步骤中,我都会输出变量的当前值,这些值似乎是正确的。我真的不知道这行是怎么回事,因为搜索功能无法正常工作:
IF not "!stringToTest:!searchValue!=!"=="!stringToTest!" echo Searchword is in Textline
这里可能只有一个小错误?我非常感谢本期中的所有提示。
@echo off
setlocal enabledelayedexpansion
set /a counter=0
set "searchValues=abc,xyz"
FOR %%G in (%searchValues%) do (
set arraySearchVal[!counter!]=%%G
set /a counter+=1
)
REM set arraySearchVal
set /a counter-=1
set "TextWhichNeedToBeSearched=tzu,abc,qsd"
FOR %%G in (%TextWhichNeedToBeSearched%) do (
set "stringToTest=%%G"
echo Textline: !stringToTest!
FOR /l %%I in (0,1,%counter%) do (
set "searchValue=!arraySearchVal[%%I]!"
echo Searchword: !searchValue!
REM echo !stringToTest! found in Textline | findstr "!searchValue!"
IF not "!stringToTest:!searchValue!=!"=="!stringToTest!" echo Searchword is in Textline
)
echo/
)
endlocal
pause
我有一个类似的问题,就像我在这里问过的:嵌套循环但是,我仍然没有解决似乎很少的“问题”。我已经使用[FindStr] [2],...
这属于K.I.S.S.方法。通过使搜索参数成为数组变量,您可以使代码复杂化。您可以像这样简化它。
在过多讨论之前,为什么不需要创建计数器值列表?为什么bot循环第一个集合和第二个集合,因为for循环具有特殊的变量,因为您不分配位置值。