Eu preciso copiar alguns grandes conjuntos de arquivos de um servidor para outro (conjuntos de imagens DICOM). Eu escrevi um arquivo em lotes para automatizar o processo. O arquivo em lote lê um arquivo de texto com uma lista de casos para copiar e, em seguida, executa um comando para copiar cada um deles. Isso basicamente funciona.
A opção / WAIT deve fazer com que o START espere até que um aplicativo seja concluído antes de prosseguir. Estou usando o START / WAIT para executar o programa que copia os arquivos. Mas, START / WAIT só parece realmente esperar um máximo de 5 minutos.
No meu cenário, isso funciona bem para casos menores, para os quais o próximo começará a ser copiado imediatamente depois que o anterior terminar. Mas, para casos maiores, 5 minutos não é tempo suficiente para terminar e, portanto, vários casos acabam copiando ao mesmo tempo. Isso causa problemas, em casos específicos, não sendo copiados completamente.
Eu tentei usar a opção / B com o START. Isso falha de uma maneira diferente. Especificamente, um programa em execução por mais de 5 minutos termina em vez de poder ser executado simultaneamente.
Para o registro, estou tentando executar isso no Windows 10, mas tive o mesmo problema com o Windows 7.
O seguinte é o código que estou usando:
@echo off
REM Usage - copylist filename.txt > copylog.txt
if exist %1 (
echo File %1 found.
for /f "tokens=*" %%i in (%1) do (
echo "Copying %%i"
START "%%i" /WAIT "c:\conquest\dgate.exe" --movepatient:X-server,Y-server,%%i
)
) else (
echo File was not found.
)