|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2012
Messaggi: 130
|
[Batch] Impedire istanze multiple - curiosità
Ciao.
Ho scritto queste poche righe da aggiungere all'inizio di uno script, per impedire l'esecuzione contemporanea di più istanze: Codice:
TASKLIST /FI "WINDOWTITLE eq Una_sola_istanza.bat" |( FINDSTR cmd.exe ) IF %errorlevel% EQU 0 ( EXIT ) TITLE Una_sola_istanza.bat PAUSE Il codice funziona correttamente se si fa ripetutamente doppio click sull'icona del file bat: solo la prima istanza viene eseguita, mentre le seguenti vengono terminate immediatamente. Ma se, dopo l'apertura della prima finestra si clicca sul prompt, è possibile aprire una seconda istanza. Cliccando sul secondo prompt è possibile aprirne una terza... e così via. Qualcuno più esperto di me conosce la ragione di questo comportamento? Grazie, |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Nel tuo script stai cercando una finestra che ha come titolo "Una_sola_istanza.bat", ma se apri il prompt la finestra non ha il nome dello script quindi il controllo viene superato.
Per fare quello che chiedi, dovresti utilizzare un file di guardia, se c'è vuol dire che un'altra istanza è in esecuzione, altrimenti lo crei, esegui il tuo codice e alla fine cancelli il file. |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Jul 2012
Messaggi: 130
|
Quote:
Però mi hai messo sulla strada giusta: quando si clicca sulla finestra (non lo avevo notato ) il titolo viene automaticamente modificato da "Una_sola_istanza.bat" a "Seleziona Una_sola_istanza.bat", e quindi, ovviamente, il controllo non funziona più.Buona idea quella del "file di guardia": non ci avevo pensato .Grazie. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:33.












) il titolo viene automaticamente modificato da "Una_sola_istanza.bat" a "Seleziona Una_sola_istanza.bat", e quindi, ovviamente, il controllo non funziona più.
.








