检查一行是否存在于文本文件中或不存在于cmd中

时间:2018-05-19 20:36:39

标签: windows batch-file cmd

@echo off
set doit=false
if exist findstr /n . lla.txt | findstr ^j: set doit=true
if "%doit%"=="true" (
echo found
) else (
echo doelse
)
每个人都好 我想检查文本文件中的行 例如,如果我的文本文件中存在line3,则找到echo 如果不是那么echo doelse

我的问题是什么?

1 个答案:

答案 0 :(得分:0)

要查看lla.txt是否至少有3行将j替换为3并使用此类结构:

@Echo Off
(
    FindStr /N "^" "lla.txt" | FindStr "^j:" > Nul
) && (
    Echo Line Found
) || (
    Echo Line Not Found
)

Pause

这使用条件执行,其中:

  • &&实质上意味着前一个命令/块是否 成功。
    (已退回0 %ErrorLevel%

  • ||实质上意味着前一个命令/块是否 不成功。
    (退回非0 %ErrorLevel%

如果找不到lla.txt,则第一个FindStr会输出错误并执行Line Not Found括号内的命令。

如果这就是您想要的,那么您可以通过将STDERR输出发送到这样的NUL设备来抑制错误消息:

@Echo Off
(
    FindStr /N "^" "lla.txt" 2> Nul | FindStr "^j:" > Nul
) && (
    Echo Found
) || (
    Echo Line Not Found
)

Pause

如果您想在这些情况下做一些不同的事情,您应首先验证源文件是否存在:

这使用If / Else结构:

@Echo Off
If Exist "lla.txt" (
    (
        FindStr /N "^" "lla.txt" | FindStr "^j:" > Nul
    ) && (
        Echo Found
    ) || (
        Echo DoElse
    )
) Else (
    Echo No source file
)

Pause

这会使用IfEcho消息3秒和Exit s

@Echo Off
If Not Exist "lla.txt" (
    Echo No source file
    Timeout /T 3 > Nul
    Exit /B
)

(
    FindStr /N "^" "lla.txt" | FindStr "^j:" > Nul
) && (
    Echo Line Found
) || (
    Echo Line Not Found
)

Pause