2015-10-28 4 views
0

Итак, у меня есть эта часть кода, которая в основном является прототипом, но я не могу заставить ее работать, потому что параметр tokens for for не любит переменные, определенные в способе !var!, который может использоваться с задержкой расширения.повышение переменной токена внутри double for loop

@echo on 
setlocal enabledelayedexpansion 
set string=4 1 5 1 6 1 6 2 
set b=1 
set c=2 
for /L %%o in (1, 2, 8) do (
    call set /a "b=%%o" 
    call set /a "c=%%o + 1" 
    FOR /F "tokens=%b%,%c%" %%G IN ("%string%") DO @echo %%G %%H 
) 

Результат, который я получаю:

4 1 
4 1 
4 1 
4 1 

И результат я хочу:

4 1 
5 1 
6 1 
6 1 

Я экспериментировал на некоторое время, как решить эту проблему, но не мог Найти решение в любом случае. Есть ли простой способ исправить это или я должен попытаться сделать это с одним циклом и, возможно, с некоторыми функциями goto или call?

ответ

1

Просто вызовите функцию.

@echo off 
setlocal enabledelayedexpansion 
set string=4 1 5 1 6 1 6 2 
set b=1 
set c=2 
for /L %%o in (1, 2, 8) do (
    set /a "b=%%o" 
    set /a "c=%%o + 1" 
    CALL :label1 !b! !c! 
) 
PAUSE 
GOTO :EOF 


:label1 
FOR /F "tokens=%1,%2" %%G IN ("%string%") DO @echo %%G %%H 
GOTO :EOF 
+0

Да, я думаю, это работает, и на самом деле его легче читать. – Hoffs

Смежные вопросы