Ein Batch-Skript verarbeitet eine Liste mit zwei oder mehr Parametersätzen in einer For-Schleife, um sie in einer Codezeile auszuführen.

Ein Batch-Skript verarbeitet eine Liste mit zwei oder mehr Parametersätzen in einer For-Schleife, um sie in einer Codezeile auszuführen.
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

Ich möchte also ersetzen die{Quellverzeichnis}Und{Zielverzeichnis}Parameter inRobocopyBefehl mitVariablendiese Referenz entsprichtListe(n)Robocopy füllt die Variablen mit jeder ListeInhaltbei jedem Durchgang (gleichzeitigAls ein2er-SetVariablen). Ganz einfach: Ich versuche, unnötige Wiederholungen zu vermeiden, indem ich für dieselbe Aufgabe eine Zeile anstelle mehrerer verwende.

_______Liste A_________Liste B_______

  1. c:\Quelle1 >>> c:\Ziel1
  2. c:\Quelle2 >>> c:\Ziel2
  3. c:\Quelle3 >>> c:\Ziel3

Antwort1

Ich denke, Powershell wird besser funktionieren, aber ich denke, das ist es, was Sie wollen (ich habe die Echos drin gelassen, damit Sie sehen können, was es tut), aber Sie sollten die Zeile bearbeiten, die mit "echo robocopy" beginnt

X.BAT wie folgt

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

Gibt

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

verwandte Informationen