2016-03-16 26 views
5

Buongiorno, ho un file .bat che esegue un'applicazione specifica e dopo 5 secondi chiude/uccide.Apertura/chiusura dell'applicazione tramite file .bat [Windows]

In questo momento, a causa dell'apertura dell'applicazione, ho pensato che quando l'app si aprirà non eseguirà i comandi rimanenti a meno che non chiuda manualmente l'app.

Ecco il mio codice:

cd "C:\Program Files (x86)\Aspera\Point-to-Point\bin\" 
asperascp.exe 
sleep 5 
taskkill /IM asperascp.exe /f 

Cerco anche di rimuovere il comando sleep.

cd "C:\Program Files (x86)\Aspera\Point-to-Point\bin\" 
asperascp.exe 
taskkill /IM asperascp.exe /f 

Ma lo stesso output non eseguirà i comandi rimanenti all'avvio di asperascp.exe.

Qualche consiglio?

Grazie.

risposta

7

È possibile utilizzare il comando Start /b.

@echo off 
cd "C:\Program Files (x86)\Aspera\Point-to-Point\bin\" 
Start "" /b asperascp.exe 
timeout /T 5 /nobreak >nul 
taskkill /IM asperascp.exe /F 
+2

Sta dicendo che aspetta già di terminare prima di continuare. Vuole ucciderlo cinque secondi dopo l'inizio; dovrebbe usare 'start/b'. – SomethingDark

+1

@SomethingDark Ho modificato la mia risposta grazie per avermi avvisato – Hackoo

+0

Grazie, sei fantastico! – Edmhar

3

TASKKILL /IM asperascp.exe /F
ucciderà tutte le immagini con lo stesso nome dell'immagine. Quindi, se si esegue lo stesso programma due volte, ad esempio, e il secondo inizia prima della chiusura del primo, anche il secondo verrà ucciso quando il primo esegue taskkill. Se fai tasklist vedrai alcune immagini con lo stesso nome dell'immagine, ma con PID differenti. Dovrai ottenere il PID del processo avviato dal tuo file batch (non riesco a pensare a come farlo con CMD.) Quindi puoi usare: TASKKILL /PID 999 /F