Пакетный скрипт обрабатывает список из двух или более наборов параметров в цикле For для выполнения в одной строке кода.

Пакетный скрипт обрабатывает список из двух или более наборов параметров в цикле For для выполнения в одной строке кода.
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

Поэтому я хотел бы заменить{Исходный каталог}и{Каталог назначения}параметры вРобокопиякоманда спеременныечто ссылка соответствующаясписок(и)поэтому Robocopy заполнит переменные каждым спискомсодержаниена каждом проходе (одновременнокакнабор из двухпеременные). Проще говоря, я пытаюсь исключить ненужные повторения, используя одну строку вместо нескольких для выполнения одной и той же задачи.

_______Список А_________Список Б_______

  1. c:\Источник1 >>> c:\Пункт назначения1
  2. c:\Источник2 >>> c:\Пункт назначения2
  3. c:\Источник3 >>> c:\Пункт назначения3

решение1

Я думаю, что PowerShell будет работать лучше, но я думаю, что это то, что вам нужно (я оставил echoes, чтобы вы могли увидеть, что он делает), но вам нужно будет отредактировать строку, начинающуюся с «echo robocopy».

X.BAT следующим образом

@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
)
)

Дает

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

Связанный контент