Si vous voulez simplement obtenir tout ce qui se trouve après le tiret bas (et que vous ne connaissez pas nécessairement la longueur de la chaîne ou l'endroit où se trouve le tiret bas, mais pouvez compter sur le fait qu'il n'y en a qu'un seul), essayez:
for /f "tokens=2 delims=_" %%a in ("%STRING%") do (
set AFTER_UNDERSCORE=%%a
)
Fondamentalement, votre chaîne sera divisée en jetons en utilisant le tiret bas comme délimiteur (delims=_). Seul le deuxième (tokens=2) sera transmis (en tant que variable %%a) à la boucle for. La boucle ne s'exécutera qu'une seule fois car vous traitez ici avec une seule chaîne.
Si vous voulez sauvegarder à la fois ce qui se trouve avant et après le tiret bas, essayez:
for /f "tokens=1,2 delims=_" %%a in ("%STRING%") do (
set BEFORE_UNDERSCORE=%%a
set AFTER_UNDERSCORE=%%b
)
Remarquez que %%a est la variable pour le premier jeton de la division; %%b est la variable pour le deuxième jeton de la division.