Como você está procurando uma solução em lote, outra maneira de fazer isso é criar um loop FOR com o 0
thru x
intervalo do índice. O loop FOR irá iterar os valores numéricos do índice e usar o CALL para chamar nomes de sub-rotina correlacionados.
Os nomes dos rótulos da sub-rotina serão os mesmos, exceto os valores numéricos do índice (como no loop FOR ) são anexados aos nomes dos rótulos (ou seja, :idx0
, :idx1
, :idx2
e assim por diante).
Cada sub-rotina deve ter os nomes de variáveis "iguais", mas os valores de cada um devem ser definidos de acordo com a necessidade, mas cada sub-rotina deve terminar com GOTO :EOF
. O GOTO :EOF
passará o controle de volta para o responsável pela chamada e permitirá que ele conclua sua lógica. Nesse caso, o FOR / R loop será iniciado.
Certifique-se de que, uma vez que sua lógica termine, você terá EXIT
ou GOTO :EOF
para que ela não seja movida para a lógica abaixo, como rótulos de sub-rotinas destinados apenas a serem executados com CALL .
Exemplo de script
@echo off
set "mansource=somelocation\location1\sourcefolder"
set "mandest=someloacation\location2\destfolder"
FOR %%A IN (0,1) DO CALL :idx%%A
for /r "%mansource%" %%f in (!src!) do xcopy "%%f" "!dest!" /v/y
pause
::GOTO :EOF
EXIT
:idx0
set src="%MANSOURCE%\folderA\number1.pdf"
set dest="%MANDEST%\folderB\number"
GOTO :EOF
:idx1
set src="%MANSOURCE%\folderC\number2.pdf"
set dest="%MANDEST%\folderD\number"
GOTO :EOF