Проверьте, существует ли подстрока в строке из сценария cmd / bat - PullRequest
0 голосов
/ 26 декабря 2018

Я хочу проверить, существует ли count в mycountry или нет, а затем выполнить некоторые операции в соответствии с

Мой фрагмент кода:

rem @ECHO OFF
cls
SET FILE="mycountry"

Если true, я хочувыполнить 3 оператора и, если false, я хочу запустить 3 других оператора.

Я пробовал эту комбинацию:

Echo.%FILE% | findstr /C:"count">nul && (Echo.TRUE) || (Echo.FALSE)

Но как написать несколько операторов, если условие становится истинным? Я не хочу использовать какую-либо флаговую переменную.

Ниже фрагмент не работает.

Echo.%FILE% | findstr /C:"count">nul && 
(
Echo.TRUE
echo "ran correct."
) 
|| (Echo.FALSE)

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Ваш код, (встроенный в пакетный файл) , похоже, работает должным образом:

@Echo Off

Set "FILE="

Set /P "FILE=Enter String: "

If Not Defined FILE Exit /B

Echo.%FILE% | findstr /C:"count">nul && (Echo.TRUE) || (Echo.FALSE)

Pause

Кроме того, оба следующих метода работают должным образом:

Использование Echo и FindStr (как в вашем коде) :

@Echo Off

Set "FILE="

Set /P "FILE=Enter String: "

Echo=%FILE%|FindStr /IC:"count">Nul 2>&1&&(Echo TRUE
    Echo Ran correct.
    Timeout 3 /NoBreak>Nul
    Echo Still running!)||Echo FALSE
Pause

Использование подстановки переменных:

@Echo Off

Set "FILE="

Set /P "FILE=Enter String: "

If /I "%FILE:count=%"=="%FILE%" (Echo FALSE) Else (Echo TRUE
    Echo Ran correct.
    Timeout 3 /NoBreak>Nul
    Echo Still running!)
Pause

ЕслиПриведенные выше примеры не работают для вас, вы должны отредактировать свой вопрос, включив в него реальный код и строки, которые вы используете в вашем реальном сценарии.Мы не можем исправить то, что не видим, особенно если вы не полностью объясните проблему, (snippet is not working является только утверждением, а не объяснением) .

0 голосов
/ 26 декабря 2018

Вы можете использовать значение % errorlevel% в сочетании с if / else.
См. Пример ниже:

REM @echo off
cls
SET FILE="mycountry"
SET STR="TEST"

findstr %STR% %FILE% >nul
if %errorlevel% equ 1 (
    goto searchError
) else (
    goto searchSucces
)

:searchSucces
echo String %STR% found in file %FILE%
pause
exit

:searchError
echo String %STR% not found in file %FILE%
pause
exit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...