2013-04-09 17 views

risposta

10

È possibile eseguire semplicemente taskkill /im notepad.exe in tutti i casi. Se non è in esecuzione, quindi taskill non avrà nulla da uccidere e tornerà solo.

In questa situazione, taskkill segnala un errore e imposta il livello di errore. È possibile sopprimere la segnalazione dell'errore reindirizzando standard error:

taskkill /im notepad.exe 2> nul 

Per quanto riguarda il livello di errore, si può semplicemente ignorare che e sarà eliminato dal comando successivo che si esegue. O se necessario, è possibile clear it yourself.

Questo approccio è, a mio avviso, meglio che tentare di anticipare se taskkill riuscirà o meno. Non sarai in grado di anticipare tutte le possibili modalità di errore e dal momento che lo stesso taskkill esegue esattamente il controllo che stai chiedendo, penso che potresti lasciare il controllo a taskkill.

+0

Forse il richiedente stava cercando ** taskkill/im notepad.exe || exit/b ** – joojaa

+0

non genererà un errore? se lo fa, potrebbe non eseguire le prossime dichiarazioni? – Mowgli

+0

Segnala un errore. E mostro come sopprimerlo. Ma continuerà ad eseguire la prossima dichiarazione. Ricorda che questo è un batch di cui stiamo parlando, non un vero linguaggio di programmazione! ;-) –

6

Provare taskkill /fi "IMAGENAME eq notepad.exe" Non trovando notepad.exe verranno generate solo informazioni invece di un errore.

+0

+1 È abbastanza carino. Evita di dover ripristinare il livello di errore. Tuttavia, la tua dichiarazione finale è fuorviante. Gli errori non fermano l'esecuzione. L'esecuzione si collega solo a fronte di errori. –

+0

Risolto ora, grazie! – tomdemuyt

Problemi correlati