Как проверить, содержит ли переменная другую переменную в пакетном файле Windows?
Предполагая следующий пакетный файл
set variable1=this is variable1
set variable2=is
set variable3=test
if variable1 contains variable2 (
echo YES
) else (
echo NO
)
if variable1 contains variable3 (
echo YES
) else (
echo NO
)
Я хочу, чтобы на выходе был YES, а затем NO
Ответы
Ответ 1
Я решил это со следующими
setLocal EnableDelayedExpansion
set variable1=this is variable1
set variable2=is
set variable3=test
if not "x!variable1:%variable2%=!"=="x%variable1%" (
echo YES
) else (
echo NO
)
if not "x!variable1:%variable3%=!"=="x%variable1%" (
echo YES
) else (
echo NO
)
endlocal
Я получил основную идею из следующего ответа, но он не искал переменную, так что это было не совсем то, что я искал.
Пакетный файл: найдите, если подстрока находится в строке (не в файле)
Ответ 2
другой способ:
echo/%variable1%|find "%variable2%" >nul
if %errorlevel% == 0 (echo yes) else (echo no)
/
предотвращает вывод Echo is ON
или Echo is OFF
в случае, если %variable1%
пуст.
Ответ 3
Ответ Гэри Брантон не помог мне.
Если вы попытаетесь с помощью set variable1="C:\Users\My Name\"
, вы получите сообщение об ошибке:
'Name\""' is not recognized as an internal or external command
Адаптация этого ответа Узнайте, содержит ли переменная окружения подстроку, я закончил с:
echo.%variable1%|findstr /C:"%variable2%" >nul 2>&1
if not errorlevel 1 (
echo Found
) else (
echo Not found
)