关于批处理文件:FINDSTR无法在for循环中使用ERRORLEVEL

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"