como usar o comando sleep para execução paralela de arquivos em lote

0

Desculpe por essa pergunta idiota e dolorosa. Eu tenho 2 arquivos em lotes onde eu tenho alguns comandos para executar em batchfile1 e dormir por algum tempo e, em seguida, executar somecommands em batchfile2 e novamente batchfile2 vai esperar por algum tempo e, em seguida, novamente batchfile1 .., então eu tenho abaixo script

Batchfile1.bat

@echo off
echo helloworld
call Batchfile2.bat
GOTO END

Batchfile2.bat

@echo off
echo printing

Alguém pode sugerir como usar o sono para este cenário, estou vendo diferentes opções de sono, tempo limite .. etc. e qual é o melhor para usar neste cenário?

    
por user2883028 02.11.2013 / 13:39

2 respostas

0

Bem, o SLEEP não é um comando em lote padrão do Windows, então isso está errado.

Desde que o script nunca precise ser executado no XP, o TIMEOUT é perfeito. Por exemplo, para dormir 3 segundos:

timeout 3 /nobreak >nul

Se você quiser que o script funcione também no XP, o padrão é usar o PING. Ele aguarda aproximadamente 1 segundo entre os pings, então instrua-o a pingar mais do que o número desejado de segundos. Então aqui está o exemplo para um atraso de 3 segundos:

ping -n 4 127.0.0.1 > nul
    
por 02.11.2013 / 14:11
0

Os scripts não precisam necessariamente estar em arquivos separados, pois o CALL também pode chamar rótulos. Isso faria o que você está descrevendo:

@echo off

:start
call :script1
timeout 1 /nobreak >nul
call :script2
timeout 1 /nobreak >nul
goto :start

:script1
echo script1
goto :eof

:script2
echo script2
goto :eof

Se você quiser que os scripts vivam em arquivos externos, uma abordagem semelhante funcionará da seguinte maneira:

@echo off

:start
call script1.bat
timeout 1 /nobreak >nul
call script2.bat
timeout 1 /nobreak >nul
goto :start
    
por 02.11.2013 / 15:13