批次腳本處理 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 將使用每個列表填充變量內容在每次通過時(同時作為一個兩件套變數)。很簡單,我試圖消除不必要的重複,使用一行來代替多行來完成相同的任務。

_______列表A_________名單B_______

  1. c:\源1 >>> c:\Destination1
  2. c:\來源2 >>> c:\Destination2
  3. c:\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

相關內容