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 заполнит переменные каждым спискомсодержаниена каждом проходе (одновременнокакнабор из двухпеременные). Проще говоря, я пытаюсь исключить ненужные повторения, используя одну строку вместо нескольких для выполнения одной и той же задачи.
_______Список А_________Список Б_______
- c:\Источник1 >>> c:\Пункт назначения1
- c:\Источник2 >>> c:\Пункт назначения2
- 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