/ / Avvia cmd / k e poi chiudi alla fine di un altro batch - windows, batch-file, cmd, sahi

Avviare cmd / k e quindi chiudere alla fine di un altro batch: windows, batch-file, cmd, sahi

Ho un problema con cui uccidere il lancio della finestra di comandocmd / k. Per sostituire nel contesto, voglio lanciare casi di test automatici (con SAHI Framework, si riunisce a Selenium per chi lo sa). Quindi, devo lanciare il primo file .bat che contiene le suite di test. Per testare un proxy deve essere avviato, quindi devo lanciare tutto nello stesso posto perché abbiamo impacchettato tutte quelle cose in un server Jenkins.

Quindi, per ricapitolare, devo creare uno script con questi passaggi:

  1. Imposta variabili globali
  2. Avvia il server proxy (in un altro terminale)
  3. Avvia suite di casi di test

Codice :

rem Start proxy server for handle tests
start cmd /k sahi.bat

rem Starting test suites
testrunner.bat tests.suite http://website.fr/ firefox

Quindi, questi passaggi sono fatti e funzionano bene. Ma devo chiudere il proxy del server aperto nel passaggio 2 dopo il passaggio 3.

Come posso uccidere sahi.bat dopo i casi di test?

risposte:

0 per risposta № 1

Esistono diversi modi per ottenere ciò che stai cercando. La mia soluzione:

@ECHO OFF
START "Proxy" sahi.bat
START /WAIT testrunner.bat tests.suite http://website.fr/ firefox && taskkill /FI "WINDOWTITLE eq <username>: Proxy"

START "Proxy" sahi.bat avvierà una nuova console con il proxy. Il titolo della finestra sarà nome utente: Proxy. Prova ad aprire una finestra con START "test" cmd se non sei sicuro del titolo della finestra.

Adesso START /WAIT "testrunner.bat tests.suite http://website.fr/ firefox" && taskkill /FI "WINDOWTITLE eq <username>: Proxy" farà due cose: eseguirà i test in una nuova console e ucciderà il server proxy. && significa che entrambi i comandi verranno eseguiti uno dopo l'altro. Ma questo non è abbastanza in quanto il tuo script avvia i test e successivamente uccide immediatamente il proxy. Per evitare ciò, aggiungiamo semplicemente /WAIT al nostro comando per fare in modo che lo script esegua il comando kill non appena termina il pipistrello di prova.

TL; DR

  • Avviare il proxy e chiamare la finestra "nome utente: proxy"
  • Avvia i test e termina il proxy dopo aver completato i test identificando la finestra a destra usando il titolo "username: Proxy"