findstr不适用于命令

时间:2018-02-20 18:31:05

标签: batch-file

索引文件: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
)

1 个答案:

答案 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。