Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    51

    [batch] tempo di attesa

    salve a tutti,

    sto creando un file batch che deve avviare vari procedimenti (installazioni, aggiornamenti ecc..) in alcuni casi serve tempo affinchè un installazione o un aggiornamento finiscano, e se accavallo il tutto rischia di andare tutto in crash.

    per evitare questo, esiste un modo per far partire una riga di comando in un tempo da me predefinito?

    ad esempio: posso dire ad una riga di attendere 10 minuti dall'ultimo comando per eseguire il nuovo comando?

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    A mio avviso, non è una soluzione ottimale: se il programma di installazione finisce prima, si attenderà tempo superfluo inutilmente; al contrario, se finisce dopo, si rischia comunque di accavallare le esecuzioni.

    Meglio ricercare soluzioni per far sì che, lanciato un programma, si tenga "sotto controllo" procedendo con il batch - quindi con il comando successivo - solo quando il precedente è terminato.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da alka
    Meglio ricercare soluzioni per far sì che, lanciato un programma, si tenga "sotto controllo" procedendo con il batch - quindi con il comando successivo - solo quando il precedente è terminato.
    http://www.franzauker.com/lanciabat.exe
    unico parametro: il nome del file bat da lanciare
    codice:
    lanciabat provona.bat

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    51
    la vostra soluzione è in effetti ottima, ma esiste un comando per fare questo?




    perdonami franz... ma come funziona una cosa simile?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da Aggelos
    la vostra soluzione è in effetti ottima, ma esiste un comando per fare questo?




    perdonami franz... ma come funziona una cosa simile?
    ??? intendi come funziona il programmello che ho scritto per un altro utente con la stessa richiesta ???
    ho postato il sorgente in un altro thread (è quick-and-dirty ma il suo sporco lavoro lo fa)

    codice:
    program lanciabat;
    {$APPTYPE CONSOLE}
    uses     shellapi,forms,sysutils,WinTypes;
    function WaitExecute(i_filedaeseguire:string;i_parametri:string;i_flagEsecuzione:cardinal):integer;
    
    var
       SEInfo: TShellExecuteInfo;
       ExitCode: DWORD;
       ParamString, StartInString: string;
    begin
       result:=-1;
    
       if i_filedaeseguire='' then exit;
       if not fileexists(i_filedaeseguire) then exit;
       FillChar(SEInfo, SizeOf(SEInfo), 0);
       SEInfo.cbSize := SizeOf(TShellExecuteInfo);
       with SEInfo do
       begin
         fMask := SEE_MASK_NOCLOSEPROCESS;
         Wnd := Application.Handle;
         lpFile := PChar(i_filedaeseguire) ;
         lpParameters :=pchar(i_parametri);
         nShow := i_flagEsecuzione // SW_HIDE;
       end;
       if ShellExecuteEx(@SEInfo) then
         repeat
           Application.ProcessMessages;
           GetExitCodeProcess(SEInfo.hProcess, ExitCode) ;
         until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
       result:=ExitCode;
    end;
    
    begin
       if paramcount=1 then
           WaitExecute(paramstr(1),'',SW_HIDE);
    end.
    PS come vedi non ho messo il passaggio di parametri nel bat, generalmente è inutile in questi casi, ma se è indispensabile ci vuol poco a cambiare la chiamata

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.