Makefile For Loop для Windows - PullRequest
       25

Makefile For Loop для Windows

1 голос
/ 11 января 2010

Этот вопрос похож на тот, который я задаю здесь . Я работаю на Windows XP.

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

@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 "токены = 4 delims =," %% G IN («депозит, 500,123.4,12-AUG-09») ^ make: *** [все] Ошибка 255

Есть идеи, как это исправить?

Ответы [ 4 ]

1 голос
/ 01 октября 2010

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

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

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

1 1
2 2
3 3
1 голос
/ 12 января 2010

Я нашел ответ, это правильный синтаксис, который работает в 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 голосов
/ 11 января 2010

Может быть, вы можете вызвать файл командного пакета из 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. $ является escape-символом и должен быть удвоен для получения одного реального $ в строках.

0 голосов
/ 11 января 2010

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

@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
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...