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命令变量该参考对应列表因此 Robocopy 将使用每个列表填充变量内容每次通过时(同时作为一个两套变量)。很简单,我试图消除不必要的重复,用一行代替多行来完成相同的任务。
_______清单A_________清单B_______
- 目录:\Source1 >>> c:\目标1
- 目录:\Source2 >>> c:\Destination2
- 目录:\Source3 >>> c:\Destination3
答案1
我觉得 powershell 会更好用,但我认为这就是你想要的(我留下了回声,这样你就可以看到它的作用),但你需要编辑以“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