배치 스크립트는 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는 각 목록으로 변수를 채웁니다.내용물각 패스마다(동시에로서2개 세트변수). 간단히 말해서, 동일한 작업을 수행하기 위해 여러 줄 대신 한 줄을 사용하여 불필요한 반복을 없애려고 합니다.

________목록 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

관련 정보