Modifique o start.bat para detectar falhas por parte do winscp.exe. Chame somente o done.bat se o winscp.exe sair com um código de saída de 0.
Tente algo assim:
winscp.exe blah blah blah
if not errorlevel 0 goto end
call done.bat
:end
Observe que só presumo que o winscp.exe saia com 1 ou mais de erro. Verifique a documentação para o winscp.exe.
Edição para incluir o seguinte:
Digamos que o winscp.exe não use códigos de saída para denotar sucesso ou falha. Você pode precisar fazer algo diferente.
winscp.exe /log=%temp%\wscpresults.log *other parameters here*
ping -n 300 -w 1000 127.0.0.1 > nul
find /i "success" %temp%\wscpresults.log
if errorlevel 0 goto end
call done.bat
:end
Onde:
- O comando ping realiza apenas 5 minutos (300 x 1000ms ou 1 segundo = 5 minutos)
- A opção / log faz com que o winscp.exe grave os resultados da operação em um arquivo.
- O comando find procura a palavra sucesso - não tenho idéia do que o winscp realmente grava no arquivo, você teria que tentar uma vez e identificar a string que mostra tudo funcionou, e então modificar a string que encontrar pesquisas por para isso.
- Se o comando find não encontrar a palavra "success", vá para o rótulo "end" sem chamar o done.bat. Caso contrário, achamos que tudo foi bem sucedido e chamamos de done.bat.