Я написал эту функцию для хорошей интеграции скриптов. Код выглядит лучше, и его также легче запомнить. Эта функция основана на ответе Джои на этой странице. Я знаю, что это не самый быстрый код, но он, кажется, работает очень хорошо для того, что мне нужно сделать.
Просто скопируйте код функции в конец вашего скрипта, и вы можете использовать его, как в этом примере здесь:
Пример:
set "Main_String=This is just a test"
set "Search_String= just "
call :FindString Main_String Search_String
if "%_FindString%" == "true" (
echo String Found
) else (
echo String Not Found
)
Обратите внимание, что вам не нужно добавлять% к вашим переменным при передаче их этой функции, она автоматически позаботится об этом. (Это метод, который я нашел и позволил мне использовать пробелы в аргументах / переменных моей функции без необходимости использовать в них нежелательные кавычки.)
Функция:
:FindString
rem Example:
rem
rem set "Main_String=This is just a test"
rem set "Search_String= just "
rem
rem call :FindString Main_String Search_String
rem
rem if "%_FindString%" == "true" echo Found
rem if "%_FindString%" == "false" echo Not Found
SETLOCAL
for /f "delims=" %%A in ('echo %%%1%%') do set str1=%%A
for /f "delims=" %%A in ('echo %%%2%%') do set str2=%%A
echo.%str1%|findstr /C:"%str2%" >nul 2>&1
if not errorlevel 1 (
set "_Result=true"
) else (
set "_Result=false"
)
ENDLOCAL & SET _FindString=%_Result%
Goto :eof