FINDSTR not working with ERRORLEVEL in for loop
这是我的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | @echo off if exist Files.tmp del /f /q Files.tmp dir /b /s"D:\\User\\Desktop\\Test\\*.*">>Files.tmp set"tempnum=0" setlocal enableDelayedExpansion for /f %%C in ('Find /V /C"" ^< Files.tmp') do set Count=%%C for /F"tokens=1,* delims=:" %%j in (Files.tmp) do ( set /a"tempnum=!tempnum!+ 1" cls echo Scanning"%%j:%%k" echo Status: !tempnum! of !count! scanned echo. echo Detected; if exist loggers.txt type loggers.txt findstr /C:"test""%%j:%%k" if errorlevel 0 echo %%j:%%k>>loggers.txt ) echo Done! pause |
该脚本应该做的是在dir命令中的文件夹中找到任何文件,并输出其中包含" test"字符串的所有文件。
当我在命令提示符下对其进行测试时,它可以找到并且当我键入命令时,它将在测试文件中显示字符串,而不在其他文件中显示,但是当我运行批处理脚本时,它仅将目录中的每个文件作为检测输出
有人知道为什么吗?
我的评论作为单行批处理文件答案:
1 | @FindStr /SIMP"test""D:\\User\\Desktop\\Test\\*.*">"loggers.txt" |