In my case I was looping through a large set of data in the function, and I wanted to compare it with multiple strings I was searching for.
Here's how I did it, with comments to explain =)
@echo off call :TEST "String 1;String 2;String 3" goto :EOF :TEST set str=%1 REM Set the variable 'str' to the argument passed. set str=%str:;=";"% REM This is where the magic happens. Replaces all ';' characters in the string with '";"' REM This makes turns "String 1;String 2" into "String 1";"String 2" for %%A in (%str%) do echo %%~A REM And then we can loop through them and print them out one at a time. goto :EOF