Есть несколько лучших способов добиться этого, но придерживаться вашего текущего кода ..
Вы должны понимать, что строка Timer
также содержит Time
, поэтому, если она запустит time.bat
при поиске совпадений. Так что давайте лучше использовать findstr
и скажем ему искать Time
, заканчивающийся \>
, чтобы он не совпадал с Timer
при поиске Time
.
:Q3
findstr /I "Time\>" CurrentConversation.
if not errorlevel 0 goto :Q4
Call Modules\Time.bat
:: Searches for the word "timer" and if found, runs the file "Timer.bat" in the folder, modules
:Q4
findstr /I "Timer" CurrentConversation.txt
if not errorlevel 0 goto :Q5
call Modules\Timer.bat
Я также внес некоторые изменения, чтобы избавиться от блоков кода, здесь это не нужно .. Мы просто тестируем на if not errorlevel 0
. Как только он не встретит этого errorlevel
, он упадет до call bat.bat
. Однако, если это что-то отличное от errorlevel 0
, оно будет запущено.
Кроме того, еще одним способом сделать строковое математическое преобразование было бы двойное findstr для включения и исключения, но это немного излишне.
findstr /I "Time" CurrentConversation.txt | findstr /VI "Timed" test.txt CurrentConversation.txt
См. Справку от cmd.