Como posso especificar uma lista de números inteiros delimitados por vírgula e fazer um loop de script em lote para cada número inteiro?

1

Atualmente, tenho um script em lotes em que uso "set / p=". Depois que a variável é inserida, o script executa 3 comandos robocopy, usando o acima. Depois que os 3 comandos robocopy terminarem, eu uso outro "set / p again=" para perguntar se o usuário precisa rodar novamente. Às vezes, esse script precisa ser executado em 10-15 inteiros.

Existe uma maneira de fornecer uma lista de números inteiros, delimitados por vírgula ou não, e ter o loop de script de volta para cada número inteiro subseqüente?

@echo off :again echo This script will download incident data in 2 steps. echo Step 1 will attempt to download any previously archived data from your home drive. echo Step 2 will attempt to download any files from the Live Incident folder. set /p incident=Please enter the Incident Number: robocopy "\server1\share\%incident%" "C:\local-path\%incident%" *.* /ETA /MOV /E /R:1 /W:1 /MT:3 robocopy "\server2\share\%incident%" "C:\local-path\%incident%" *.* /ETA /E /R:1 /W:1 /MT:2 robocopy "\server3\share\%incident%" "C:\local-path\%incident%" *.* /ETA /E /R:1 /W:1 /MT:2 set /p again=Do you have another Incident you would like to try? if /i "%again:~,1%" EQU "Y" goto again if /i "%again:~,1%" EQU "N" exit /b

    
por Jordan H 24.03.2017 / 23:41

1 resposta

0
@echo off
:again
echo This script will download incident data in 2 steps.
echo Step 1 will attempt to download any previously archived data from your home drive.
echo Step 2 will attempt to download any files from the Live Incident folder.

set /p "incidents=Please enter the Incident Numbers separated by a comma:"

For %%I in (%Incidents%) Do Call :Process %%I
CHOICE /C YN /M "Do you have another Incident you would like to try?"
If %ErrorLevel% Equ 1 Goto :again
Goto :Eof

:Process %1
:: you might do a range check on the Incident no. %1
Echo Processing Incedent # %1
:: while testing 
goto :Eof
robocopy "\server1\share\%1" "C:\local-path\%casenum%" *.* /ETA /MOV /E /R:1 /W:1 /MT:3
robocopy "\server2\share\%1" "C:\local-path\%casenum%" *.* /ETA      /E /R:1 /W:1 /MT:2
robocopy "\server3\share\%1" "C:\local-path\%casenum%" *.* /ETA      /E /R:1 /W:1 /MT:2
Goto :Eof

Se a saída parece ok, remova o goto :eof seguinte :: while testing

    
por 25.03.2017 / 00:31

Tags