Якщо ви просто хочете, щоб усе було після підкреслення (і не обов'язково знати довжину рядка або місце підкреслення, але ви можете розраховувати на те, що буде лише один підкреслення), спробуйте:
for /f "tokens=2 delims=_" %%a in ("%STRING%") do (
set AFTER_UNDERSCORE=%%a
)
В основному, ваш рядок буде розділений на лексеми, використовуючи підкреслення як роздільник (delims = _). Лише другий (лексеми = 2) буде переданий (як змінна %% a) до циклу for. Цикл запускається лише один раз, оскільки в цьому випадку ви маєте справу з одним рядком.
Якщо ви хочете зберегти матеріал як до, так і після підкреслення, спробуйте:
for /f "tokens=1,2 delims=_" %%a in ("%STRING%") do (
set BEFORE_UNDERSCORE=%%a
set AFTER_UNDERSCORE=%%b
)
Зауважимо, що %% a - змінна для першого маркера розбиття; %% b - змінна для другого маркера розбиття.
help set
зазначеним у розділі Що найкращий спосіб зробити підрядку в пакетному файлі? на StackOverflow.