windows - Kontroller, at en linje findes i en tekstfil eller ikke i cmd
Problem
@echo off
set doit=false
if exist findstr /n . lla.txt | findstr ^j: set doit=true
if "\%doit\%"=="true" (
echo found
) else (
echo doelse
)
Hej allesammen
Jeg vil gerne tjekke linjer i en tekstfil
for eksempel hvis line3 findes i min tekstfil, så findes ekko
hvis ikke så ekko doelse
hvad er mit problem?
Bedste reference
For at se om
lla.txt
har mindst 3
linjer erstattet j
med 3
og brug denne type struktur:@Echo Off
(
FindStr /N "^" "lla.txt" | FindStr "^j:" > Nul
) && (
Echo Line Found
) || (
Echo Line Not Found
)
Pause
Dette bruger betinget udførelse, hvorved:
-
&&
betyder i det væsentlige, om den foregående kommando/blok var
succesfuld.
(returnerede en0
\%ErrorLevel\%
)
-
||
betyder hovedsagelig, om den foregående kommando/blok var
mislykket.
(returnerede en ikke0
\%ErrorLevel\%
)
Hvis
lla.txt
ikke kan findes, udsender den første FindStr
en fejl og udfører kommandoerne i dine parenteser Line Not Found
.Hvis det er det du vil, kan du undertrykke fejlmeddelelsen ved at sende
STDERR
-udgangen til en NUL
enhed som denne:@Echo Off
(
FindStr /N "^" "lla.txt" 2> Nul | FindStr "^j:" > Nul
) && (
Echo Found
) || (
Echo Line Not Found
)
Pause
Hvis du vil gøre noget anderledes i disse tilfælde, bør du bekræfte kildefilens eksistens først:
Dette bruger en
If
/Else
struktur:@Echo Off
If Exist "lla.txt" (
(
FindStr /N "^" "lla.txt" | FindStr "^j:" > Nul
) && (
Echo Found
) || (
Echo DoElse
)
) Else (
Echo No source file
)
Pause
Dette bruger en
If
, Echo
es en meddelelse til 3
sekunder og 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