索引文件:index.txt
1
3
5
想要搜索文件:file.txt
1
2
3
4
5
6
7
8
我的代码:
@echo off
for /f "delims=" %%a in (C:\index.txt) do (
findstr %%a C:\file.txt>nul
if %errorlevel% equ 0 echo found %%a
)
答案 0 :(得分:0)
使用
if NOT errorlevel 1 echo found %%a
取代
if %errorlevel% equ 0 echo found %%a
您遇到的根本问题与delayed expansion
有关(请搜索SO以获取参考资料)。
errorlevel
是为findstr
的结果设置的,但在code block
内,%errorlevel%
将替换为errorlevel
的当前值,因为它是在第一次遇到管理区块的for
时。
语法if errorlevel n ...
表示“如果错误级别是 n 或者大于 n 那么......
由于findstr
会将errorlevel
设置为0
“找到”而1
设置为“未找到”,则所需的“如果找到则显示我”为{{1 },即。 if not errorlevel 1
当前不是1或者大于1。