Три возможных решения для перебора слов строки:
Версия 1:
@echo off & setlocal
set s=AAA BBB CCC DDD EEE FFF
for %%a in (%s%) do echo %%a
Версия 2:
@echo off & setlocal
set s=AAA BBB CCC DDD EEE FFF
set t=%s%
:loop
for /f "tokens=1*" %%a in ("%t%") do (
echo %%a
set t=%%b
)
if defined t goto :loop
Версия 3:
@echo off & setlocal
set s=AAA BBB CCC DDD EEE FFF
call :sub1 %s%
exit /b
:sub1
if "%1"=="" exit /b
echo %1
shift
goto :sub1
Версия 1 не работает, если строка содержит символы подстановки, такие как '*' или '?'.
Версии 1 и 3 обрабатывают символы как '=', ';' или ',' как разделители слов. Эти символы имеют тот же эффект, что и символ пробела.