Iniciar / esperar no arquivo em lote pára de esperar após ~ 5 minutos

2

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.
)
    
por maxtown 18.03.2016 / 07:41

2 respostas

1

Não consigo reproduzir o tempo limite de 5 minutos nas janelas 7 ou 10. (Cheguei a 15 minutos).

Por que usar o START? Você já experimentou o trecho abaixo? Parece que você obtém um novo processador de comando e um título de janela do START. Talvez você possa fazer tudo no comando original?

@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"
    title "Copying %%i"
    c:\conquest\dgate.exe --movepatient:X-server,Y-server,%%i
  ) 

) else (
  echo File was not found.
)
    
por 28.03.2016 / 23:34
0
O comando

START com o parâmetro /WAIT não usa nenhum parâmetro de tempo limite, portanto, posso confirmar que o problema não é causado pelo tempo limite do comando após 5 minutos (ou algum outro intervalo). / p> A opção

/B , por outro lado, também não é algo que você gostaria de usar neste caso, pois não causa espera no processo filho.

Você pode querer iniciar o Process Monitor e capturar um rastreamento no cenário em que é necessário mais tempo para concluir e iniciar outra tarefa enquanto o primeiro não estiver concluído. Depois de ter o traço (sinta-se à vontade para anexá-lo aqui também), você pode Processar a árvore funcionar ( CTRL+T ) para ver o que aconteceu com seus processos. É mais provável que o problema não seja com o comando START /WAIT , mas com o aplicativo dgate.exe que você possui.

    
por 18.03.2016 / 21:33