\
Batch Files
StringContains() - look for some text within another text string
StringContains() [look for some text within another text string].cmd |
This demonstrates a subroutie that you can use to determine whether or not
one text string contains another.
The comparison is case insensitive.
It uses String Replacement to work and to overcome the
related Windows bug it attaches a "#" to the start, this should be safe as
long as the string you are looking for will not begin with that character :-)
[anchor]
The Code for: "StringContains() [look for some text within another text string].cmd" |
This is the example, a shortcut was installed to this code
:
@echo off
::@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
:: $Header: C:/DBAREIS/Projects.PVCS/Win32/ScriptingTipsAndTricks/EXAMPLE[cmd].StringContains() [look for some text within another text string].cmd.pvcs 1.1 11 Jul 2014 19:31:02 USER "Dennis" $
::@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set TEXT=This are a strinG of characters
set Look4=String
call :StringContains "ANSWER" "%TEXT%" "%Look4%"
echo CONTAINS IT: %ANSWER% (should be "Y")
echo.
call :StringContains "ANSWER" "%TEXT%" "NO SUCH"
echo CONTAINS IT: %ANSWER% (should be "N")
goto :EOF
::+++++++++++++++++++
:StringContains
:: P1 = The name of the environment variable to hold the answer ("Y" or "N")
:: P2 = The text to search
:: P3 = The text we are looking for
:: NEEDS: ENABLEDELAYEDEXPANSION
::+++++++++++++++++++
set VALB=#%~2
set VALA=!VALB:%~3=[MkDiff]!
set %~1=N
if not "%VALA%" == "%VALB%" set %~1=Y
Please note that that I am not trying to show how great I am by producing batch files 9,000 characters long on one line that no one will understand or be able to debug when they go wrong. I am going out of my way to comment the code and make it verbose so beginners and advanced users will both benefit. I don't claim to be an expert that knows everything, if I'm wrong or make a mistake then please contact me and let me know :-)