FINDSTR 在 for 循环中不使用 ERRORLEVEL
FINDSTR not working with ERRORLEVEL in for loop
这是我现在的代码
@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" 字符串的任何文件。
当我在命令提示符下测试它时它可以找到并且当我键入命令时它显示测试文件中的字符串而不是其他字符串但是当我 运行 批处理脚本时它只输出目录中的每个文件作为检测
有人知道为什么吗?
我的评论单行batch-file回答:
@FindStr /SIMP "test" "D:\User\Desktop\Test\*.*">"loggers.txt"
这是我现在的代码
@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" 字符串的任何文件。 当我在命令提示符下测试它时它可以找到并且当我键入命令时它显示测试文件中的字符串而不是其他字符串但是当我 运行 批处理脚本时它只输出目录中的每个文件作为检测
有人知道为什么吗?
我的评论单行batch-file回答:
@FindStr /SIMP "test" "D:\User\Desktop\Test\*.*">"loggers.txt"