在嵌套循环中变量未正确设置

问题描述 投票:0回答:2

我有一个类似的问题,就像我在这里问过的:Nested loop

但是,我仍然没有解决似乎很少的“问题”。我已经使用[FindStr][2]实现了提到的解决方案,但是运行时间比没有FindStr的要长得多。所以我想使用[]

IF not "!stringToTest:!searchValue!=!"=="!stringToTest!" echo Something

下面我发布一些可运行的代码。一开始,我只是将数组设置为要搜索的值,然后再添加一些示例“文本”,在这些文本中,我要搜索预先设置的搜索值。我的策略:

  1. 用文字行遍历我的文件。对于每行测试,每个SearchValue是否存在。
  2. 测试完所有Searchvalue后,转到下一行,并检查每个searchvalue是否存在。
  3. 所以我有两个嵌套循环。在循环的每个步骤中,我都会输出变量的当前值,这些值似乎是正确的。我真的不知道这行是怎么回事,因为搜索功能无法正常工作:

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],...

batch-file search cmd find substring
2个回答
0
投票

这属于K.I.S.S.方法。通过使搜索参数成为数组变量,您可以使代码复杂化。您可以像这样简化它。


0
投票

在过多讨论之前,为什么不需要创建计数器值列表?为什么bot循环第一个集合和第二个集合,因为for循环具有特殊的变量,因为您不分配位置值。

© www.soinside.com 2019 - 2024. All rights reserved.