Проверьте, существует ли строка в текстовом файле или нет в cmd - PullRequest
0 голосов
/ 19 мая 2018
@echo off
set doit=false
if exist findstr /n . lla.txt | findstr ^j: set doit=true
if "%doit%"=="true" (
echo found
) else (
echo doelse
)

Привет всем, кому я хочу проверить строки в текстовом файле, например, если в моем текстовом файле есть строка 3, то найден эхо, если нет, то эхо doelse

В чем моя проблема?

1 Ответ

0 голосов
/ 20 мая 2018

Чтобы узнать, содержит ли 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 es для сообщения 3 секунд и Exit с

@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...