Windows批处理文件 - 与通配符的字符串比较

时间:2016-06-29 09:18:37

标签: batch-file

我有一个带有一堆字符串的文件myFile.txt。我编写了以下批处理文件来遍历这些行,如果它等于特定字符串,则打印一行(为了演示,我现在选择字符串foo):

    @echo off
    setlocal enableextensions enabledelayedexpansion

    for /f %%i in (myFile.txt) do (

        line=%%i
        if !line! EQU foo* (
            echo !line!
        ) 

    )

在我的应用程序中,我不仅需要打印与foo完全匹配的行,还需要打印与fooBarfooBarFredfooFred匹配的行,...这就是我在那里放一张通配符的原因。

但它不起作用..

请帮忙。

2 个答案:

答案 0 :(得分:4)

findstr /b "foo" myfile.txt

/b:行应以字符串

开头

也可能有用:

/i:忽略大写(找foo,Foo,fOO,...)

有关更多选项,请参阅findstr /?

答案 1 :(得分:3)

字符串比较不允许使用通配符。

你可以通过子线你的线来简化它 但首先你应该修改你的代码 它必须是set line=%%i而不是line=%%i

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "delims=" %%i in (myFile.txt) do (
    set "line=%%i"
    set "first=!line:~0,3!"
    if "!first!" EQU "foo" (
        echo(!line!
    ) 
)