Пакет Windows: цикл с использованием двух разных списков - PullRequest
0 голосов
/ 10 октября 2018

У меня есть список каталогов DIR1, DIR2 ... DIRn, каждый из которых содержит один файл: FILE1, FILE2, ... FILEn.Я хотел бы запустить make для каждого файла:

cd %%DIR1
make.exe %%FILE1

Если бы имя файла всегда было одинаковым, это было бы легко:

for %%x in (
  DIR1
  DIR2
  ...
  DIRn
) do (
  cd %%DIR1
  make.exe FILE
  rem my dirs are two levels deep
  cd ..\..
)

Есть ли способ создать списоксо связанными элементами, чтобы каждый экземпляр do () выбирал правильный?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018
@echo off
setlocal

for %%A in (
 "DIR1|FILE1"
 "DIR2|FILE2"
 "DIRn|FILEn"
) do for /f "tokens=1-2 delims=|" %%B in ("%%~A") do (
    echo pushd "%%~B"
    echo make "%%~C"
    echo popd
)

Может сделать это с помощью 2 for петель.

DIRn и FILEn могут быть спарены, используя разделитель, такой как |, который не используется в путях.1-й цикл получит каждую строку в паре с двойными кавычками.2-й цикл разбивает строку на 2 токена строки DIRn и строки FILEn.

Отголоски в коде предназначены для проверки выходных данных и при необходимости могут быть заменены фактическими командами.

0 голосов
/ 11 октября 2018

В конце концов я создал файл EXAMPLE.TXT с текстом

DIR1 FILE1
DIR2 FILE2
...
DIRn FILEn

. На этом этапе

for /F "eol=; tokens=1,2* " %%i in ( EXAMPLE.TXT ) do ( @echo %%i %%j )

проходит по всей строке, для %% i задано значение DIRx и %%.от j до FILEx

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