命令行检查字符串变量是否包含特定文本

时间:2015-11-05 17:00:22

标签: command-line cmd

我循环浏览一个目录名列表,并且我试图找出一个目录是否有某些文字。

这是我的cmd行代码:

FOR %%a in (%%c) do (
   echo.%%a|findstr /C:"Plugin" >nul 2>&1
     if not errorlevel 1 (
       echo Found
    ) else (
      echo Not found.
    )
   )

它实际上似乎工作,但是在它完成之后,它将退出代码1.我将输出窗口构建设置为诊断,但我没有看到任何错误的解释。寻找一些指导或者更好的方法来做基本上%%a.Contains("Plugin")的事情。

1 个答案:

答案 0 :(得分:1)

您的循环在找到文件夹后继续迭代,这意味着为最后一个文件执行的findstr未通过测试,并将errorlevel设置为1.

但如果没有文件,此代码也会失败,因为do子句不会被执行,因此findstr不会设置errorlevel。

如果需要for结构(不确定,缺少代码)

for %%c in ..... do (
    FOR %%a in (%%c) do (
       echo.%%a|findstr /C:"Plugin" >nul 2>&1
       if not errorlevel 1 (
            echo Found
            exit /b 0
       )
    )
)
echo Not found
exit /b 1

或者,您可以尝试使用

( >nul 2>&1 dir /s *plugin* ) && echo found || echo not found 

将使用dir命令检查匹配的文件(如果不存在则设置错误级别)并使用条件运算符显示文本