バッチスクリプトは、For ループ内の 2 つ以上のパラメータ セットのリストを処理して、1 行のコードで実行します。

バッチスクリプトは、For ループ内の 2 つ以上のパラメータ セットのリストを処理して、1 行のコードで実行します。
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は各リストを変数に入力しますコンテンツ各パスごとに(同時にとして2個セット変数)。簡単に言えば、同じタスクを実行するために、複数行の代わりに 1 行を使用して、不要な繰り返しを排除しようとしています。

_______リストA_________リストB_______

  1. c:\ソース1 >>> c:\宛先1
  2. c:\ソース2 >>> c:\宛先2
  3. c:\ソース3 >>> c:\宛先3

答え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

関連情報