Als u alleen alles na de underscore wilt hebben (en niet noodzakelijkerwijs de lengte van de tekenreeks weet of waar de underscore staat, maar erop kunt vertrouwen dat er slechts één underscore is), probeer dan:
for /f "tokens=2 delims=_" %%a in ("%STRING%") do (
set AFTER_UNDERSCORE=%%a
)
In principe wordt uw tekenreeks opgesplitst in tokens met de underscore als scheidingsteken (delims=_). Alleen de tweede (tokens=2) wordt doorgegeven (als variabele %%a) aan de for-lus. De lus wordt maar één keer uitgevoerd, omdat het in dit geval om één enkele string gaat.
Als je het spul zowel voor als na de underscore wilt opslaan, probeer dan:
for /f "tokens=1,2 delims=_" %%a in ("%STRING%") do (
set BEFORE_UNDERSCORE=%%a
set AFTER_UNDERSCORE=%%b
)
Merk op dat %%a de variabele is voor het eerste teken van de splitsing; %%b is de variabele voor het tweede teken van de splitsing.