while iterativos hacer for ejemplos ejemplo como comando ciclo bucles bucle for-loop batch-file

for loop - iterativos - ¿Cómo hacer un bucle a través de una matriz en lote?



do while matlab ejemplo (5)

Creé una matriz como esta:

set sources[0]="//sources/folder1/" set sources[1]="//sources/folder2/" set sources[2]="//sources/folder3/" set sources[3]="//sources/folder4/"

Ahora quiero iterar a través de esta matriz:

for %%s in (%sources%) do echo %%s

¡No funciona! Parece que el script no entra en el ciclo. ¿Porqué es eso? ¿Cómo puedo iterar entonces?


Esta es una forma:

@echo off set sources[0]="//sources/folder1/" set sources[1]="//sources/folder2/" set sources[2]="//sources/folder3/" set sources[3]="//sources/folder4/" for /L %%a in (0,1,3) do call echo %%sources[%%a]%%


Otra alternativa que utiliza define y un bucle que no requiere expansión retrasada:

set Arr[0]=apple set Arr[1]=banana set Arr[2]=cherry set Arr[3]=donut set "x=0" :SymLoop if defined Arr[%x%] ( call echo %%Arr[%x%]%% set /a "x+=1" GOTO :SymLoop )

¡Asegúrese de utilizar "call echo" porque el eco no funcionará a menos que tenga una demora de expansión y uso! en lugar de %%


Si no necesita variables de entorno, haga lo siguiente:

for %%s in ("//sources/folder1/" "//sources/folder2/" "//sources/folder3/" "//sources/folder4/") do echo %%s


Si no sabe cuántos elementos tiene la matriz (que parece ser el caso), puede usar este método:

for /F "tokens=2 delims==" %%s in (''set sources['') do echo %%s

Tenga en cuenta que los elementos se procesarán en orden alfabético , es decir, si tiene más de 9 (o 99, etc.) elementos, el índice debe haber dejado cero (s) en los elementos 1..9 (o 1..99, etc.)


Utilizo esto, lo importante es que la variable tiene solo 1 longitud, como %% a, y no como %% repo:

for %%r in ("https://github.com/patrikx3/gitlist" "https://github.com/patrikx3/gitter" "https://github.com/patrikx3/corifeus" "https://github.com/patrikx3/corifeus-builder" "https://github.com/patrikx3/gitlist-workspace" "https://github.com/patrikx3/onenote" "https://github.com/patrikx3/resume-web") do ( echo %%r git clone --bare %%r )