2014-02-20 6 views
0

Я получаю только 1 элемент: Добавление - RegistrationPool для следующего цикла. Что я сделал не так? Как выполнить итерацию следующего токена/элемента?Batch File Loops with delims

for /F "delims=!" %%i in ("RegistrationPool"!"SubSystemService") DO (
    echo Adding - %%i 
    echo. 

) 
+1

'(' должен быть на той же строке, что и 'DO' – Stephan

+0

Благодаря этой помощи! , но теперь у меня возникла новая проблема: цикл повторяется только один раз – Kyle

+0

Что именно вы пытаетесь сделать? – Stephan

ответ

1

если вы используете запятую или пробел вместо восклицательного знака, вы можете просто использовать:

for %%i in (RegistrationPool,SubSystemService) DO (
    echo testing %%i 
    echo. 
) 
0

Чтобы разбить строку вам нужна строка для разделения

for /F "delims=!" %%i in ("RegistrationPool!SubSystemService") DO (
    echo Adding - %%i 
) 

Но это все равно будет печатать только один «Добавление» линии. Зачем?. for /f будет перебирать файлы/строки, выполняя содержимое do тела один раз в строке. У вас есть только одна строка (с двумя токенами, но одна строка), поэтому только одна итерация.

Вы можете получить доступ к второму элементу в качестве второго маркеров

for /F "tokens=1,2 delims=!" %%i in ("RegistrationPool!SubSystemService") DO (
    echo Adding - %%i 
    echo Adding - %%j 
) 

Первого маркер хранится в указанном параметре сменного, и следующие маркеров в алфавитном порядке.

Но, если итерация по списку является то, что требуется, то правильная конструкция является

for %%i in ("RegistrationPool" "SubSystemService") DO (
    echo Adding - %%i 
) 

Теперь есть for команды итерации по списку элементов. Два элемента, две итерации, две строки «Добавление».