Как разбить строки в цикле партии - PullRequest
0 голосов
/ 19 сентября 2010

Как правило, я хочу выполнить некоторые операции с некоторыми переменными в цикле, количество переменных может измениться, я попробовал пример, подобный следующему:

set header1 = appdef1.h
set header2 =appdef2.h
set header3 = appdef3.h
set headers = "% header1%% header2%% header3%"
for / f "delims =" %% i in (% headers%) сделать эхо%% i
пауза

пока выводится только "appdef.h", сбивает с толку!

Ответы [ 2 ]

1 голос
/ 20 сентября 2010

Это должно делать то, что вы хотите:

set header1=appdef1.h
set header2=appdef2.h
set header3=appdef3.h
set headers=%header1% %header2% %header3%
for %%i in (%headers%) do echo %%i
pause

Ваш исходный код передал только 1 параметр как %% i, ваше исправление передало их как% 1,% 2% 3 в: lable, после чего они были выделены.

Мой код вызывает echo %% i один раз с каждым параметром.

c:\>set header1=appdef1.h 

c:\>set header2=appdef2.h 

c:\>set header3=appdef3.h 

c:\>set headers=appdef1.h appdef2.h appdef3.h 

c:\>for %i in (appdef1.h appdef2.h appdef3.h) do echo %i 

c:\>echo appdef1.h 
appdef1.h

c:\>echo appdef2.h 
appdef2.h

c:\>echo appdef3.h 
appdef3.h

c:\>pause
Press any key to continue . . . 
1 голос
/ 20 сентября 2010

Получил решение:

@echo off
set header1=appdef1.h
set header2=appdef2.h
set header3=appdef3.h
set headers= "%header1% %header2% %header3%"

for /f "tokens=* delims= " %%i in (%headers%) do call :lable %%i
goto END

:lable
if "%1"=="" (
echo the end
goto END
)

echo %1
shift
goto lable

:END
pause
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...