为什么这个管道在for循环中不起作用

时间:2016-03-09 15:25:01

标签: batch-file for-loop pipeline

运行代码时,会输出FIND: Parameter format not correctThe process tried to write to a nonexistent pipe.。由此,我非常确定for循环不能处理管道和/或重定向。我不确定该怎么做,我已经尝试在循环外运行它,并且工作正常,但在循环内它会丢弃假人。有谁知道为什么,或者我如何解决这个问题?

@ECHO OFF

setlocal enabledelayedexpansion
for /F "tokens=*" %%a in (set_1.txt) do (
    type set_2.txt | find %%a > nul
    if !errorlevel! EQU 1 (
        echo %%a
    )
) 

endlocal
pause

在有人说出来之前,我知道这不是在文件中查找字符串的最有效方法,但对于我处理的文件大小并不重要。

1 个答案:

答案 0 :(得分:4)

type someFile | find word完全失败,因为find需要引号中的“单词”。

因此,解决方案是将您的行更改为

type set_2.txt | find "%%a" > nul
if !errorlevel! EQU 0 (
     ....

甚至更简单

type set_2.txt | find "%%a" > nul || echo %%a not found