我循环浏览一个目录名列表,并且我试图找出一个目录是否有某些文字。
这是我的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")
的事情。
答案 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
命令检查匹配的文件(如果不存在则设置错误级别)并使用条件运算符显示文本