2010-01-11 5 views
1

Это аналогичный вопрос с тем, который я ask here. Я работаю на Windows XP.Makefile For Loop on Windows

Я пытаюсь получить цикл для работы в Windows. В соответствии с предложением, что I have to make sure that the command are valid cmd command, я построил действующий для команды пакетного цикла:

@echo off 
FOR /F "tokens=4 delims=," %%G IN ("deposit,$4500,123.4,12-AUG-09")^
DO^
echo Date paid %%G^

И положил его в Makefile. Это содержание Makefile:

all: 
    @echo off 
    FOR /F "tokens=4 delims=," %%G IN ("deposit,$4500,123.4,12-AUG-09")^
    DO^
    echo Date paid %%G^

Но все же, я получил сообщение об ошибке:

FOR /F "tokens=4 delims=," %%G IN ("deposit,500,123.4,12-AUG-09")^ make: *** [all] Error 255

Любая идея, как это исправить?

ответ

1

Я нашел ответ, это правильный синтаксис, который работает в Makefile Windows:

all: 
    @echo off 
    FOR /F "tokens=4 delims=," %%G IN ("deposit,$4500,123.4,12-AUG-09") \ 
    DO \ 
    echo Date paid %%G echo 123 
0

Ваш раскол не прав, не используйте ^. Сделайте следующее:

@echo off 
FOR /F "tokens=4 delims=," %%G IN ("deposit,$4500,123.4,12-AUG-09") DO (
    echo Date paid %%G 
    rem you can put as many lines as you want here, inside of braces 
    echo 123 
) 
+0

I попробовал ваше предложение, но он вывел точную строку 'For/F '" ... echo 123) ', а не результат. – Graviton

0

Возможно, вы можете вызвать командный файл команды из файла Makefile?

all: 
    MyBatch.bat "deposit,$$4500,123.4,12-AUG-09" 

С MyBatch.bat следующим образом.

@echo off 
FOR /F "tokens=4 delims=," %%G IN ("%1")^
DO^
echo Date paid %%G^

Остерегайтесь $ в представлении Makefile. $ - это шатер-побег, и его нужно удвоить, чтобы получить один реальный $ в строках.

+0

Спасибо, но я не думаю, что хочу вызвать командный файл из моего make-файла. Я бы предпочел настоящий синтаксис окон makefile. – Graviton

0

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

for %%i in ($(SOMETHING)) do echo %%i 1 && echo %%i 2 && echo %%i 3 

Это распечатай что-то вроде:

1 1 
2 2 
3 3