@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
我的问题是什么?
答案 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
这会使用If
,Echo
消息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