El script por lotes procesa una lista de dos o más conjuntos de parámetros en un bucle For para ejecutar en una línea de código

El script por lotes procesa una lista de dos o más conjuntos de parámetros en un bucle For para ejecutar en una línea de código
set listSource=Source_1 Source_2 Source_3
set listDestination=c:\Destination_1 c:\Destination_2 c:\Destination_3

:: Looking for one line like the example below
for /D /R %%A in (%listSource%) AND %%B in (%listDestination%) do ( robocopy %%A %%B)

::Instead of what I have currently...
for /D /R %%A in (Source_1) do robocopy %%A c:\Destination_1
for /D /R %%A in (Source_2) do robocopy %%A c:\Destination_2
for /D /R %%A in (Source_3) do robocopy %%A c:\Destination_3

Entonces me gustaría reemplazar el{Directorio de origen}y{Directorio de destino}parámetros enrobocopiacomando convariablesesa referencia correspondienteliza)entonces Robocopy completará las variables con cada listacontenidoen cada pase (al mismo tiempocomo unconjunto de dosvariables). En pocas palabras, estoy tratando de eliminar repeticiones innecesarias, usando una línea en lugar de varias para realizar la misma tarea.

_______Lista A_________Lista B_______

  1. c:\Fuente1 >>> c:\Destino1
  2. c:\Fuente2 >>> c:\Destino2
  3. c:\Fuente3 >>> c:\Destino3

Respuesta1

Siento que PowerShell funcionará mejor, pero creo que esto es lo que buscas (dejé los ecos para que puedas ver lo que hace), pero querrás editar la línea que comienza con "echo robocopy".

X.BAT de la siguiente manera

@echo off
set listSource=Source_1~c:\Destination_1 Source_2~c:\Destination_2 Source_3~c:\Destination_3
for %%A in (%listSource%) do ( 
echo %%A
for /f "tokens=1,2 delims=~" %%C in ("%%A") do (
echo robocopy %%C %%D
)
)

Da

C:\Users\ross>x
Source_1~c:\Destination_1
robocopy Source_1 c:\Destination_1
Source_2~c:\Destination_2
robocopy Source_2 c:\Destination_2
Source_3~c:\Destination_3
robocopy Source_3 c:\Destination_3

información relacionada