【发布时间】:2023-03-08 07:01:01
【问题描述】:
我有一个包含几行的文件:
"pathToFile=%~dp0PBreport\cpy\Install\"
更多,我有一个具有不同搜索值的字符串列表:
"searchValue=abc,there,rtz"
我的目标是搜索文件的每一行以查找搜索值的出现,然后执行一些代码。但是,如果可能找到我的搜索值列表中的第一个元素,则无需检查其他值。
我用一个嵌套的 foo 循环来完成整个事情,但是当我实现类似GOTO 的东西时,外部循环不会继续。在循环中使用 GOTO 是否有一些错误?或者是否有更好的方法来退出并跳过所有其他检查(如果已经找到)?
没有GOTOstatement,完整的代码工作没有问题。
FOR /f "tokens=1 delims=" %%G in (%pathToFile%) do (
set "dataRow=%%~G"
FOR %%I in (%searchValue%) do (
IF not "!dataRow:%%I=!"=="!dataRow!" (
### some Code here ###
GOTO endIfCases
)
)
###some similiar blocks like the one above which can also be ignored if one match was found beforehand###
:endIfCases
### some Code which needs to be excecuted at the end of each loop from the outer FOR###
)
【问题讨论】:
-
GOTO命令执行其编程的操作。转到代码中的预定义标签并从那里开始执行。这将打破您正在执行的任何FOR命令。 -
这就是我想要它做的事情。然而,他似乎也没有继续外循环 FOR /f 因为我的输出只有一个值
-
正如我所说,它破坏了您正在执行的 ANY
FORcommands。你需要调用一个标签来做你想做的事情。 -
嗯,我明白了,好的,我会尝试这样做,谢谢
-
还记得一周前我给你this example的时候吗? 这是一个基本的三行示例:1.
@Set "listPC=Win10,Motherboard,USB-Port,Core", 2.@Set "dummyline=Environment,1234,ZUIOP,Core", 3.@For %%# In (%listPC%)Do Echo("%%#"|FindStr /IL "\"%dummyline:,= %\"">NUL&&(Echo Searchstring %%# is in String to Test&Pause)我>。这与您现在所问的相差多远?
标签: loops for-loop batch-file cmd exit