2011-07-15 20 views
10

Il comando di avvio può lanciare un'applicazione come blocco note in un file batch come questo:Chiudere un'applicazione in esecuzione da riga di comando DOS

start notepad 
start "my love.mp3" 

ma come faccio a chiudere l'applicazione in esecuzione dalla riga di comando? Ho trovato taskkill nelle mie ricerche ma non penso che sia il comando giusto perché non funziona — non dice tale file.

Come si chiude un'applicazione avviata con start?

+0

Niko quale versione di Windows è in esecuzione? – ErikE

risposta

4

Taskkill è corretto. Ma devi uccidere il processo riproducendo il file, non il file stesso. Capire il gestore registrato per i file mp3 da un prompt dei comandi sarà un po 'complicato.

Se lo sai, puoi uccidere quel processo.

Ecco uno script che capisce l'applicazione registrata per i file MP3 e uccide il compito:

@echo off 
if not .%1==. goto show 

:createtemp 
set tempfile="%temp%\temp-%random%-%time:~6,5%.bat" 
if exist %tempfile% goto :createtemp 

reg query HKEY_CLASSES_ROOT\mp3file\shell\play\command\ > %tempfile% 

for /F "skip=4 delims=> tokens=2 usebackq" %%e in (`type %tempfile%`) do call %0 %%e 

del %tempfile% > nul 
set tempfile= 
set handler= 
set teststring= 
set offset= 
set cmd= 
goto end 

:show 
set handler=%2 
set handler=%handler:~1,-1% 
set /A offset=-1 

:loop 
set cmd=set teststring=%%handler:~%offset%%% 
echo %cmd% > %tempfile% 
call %tempfile% 
if %teststring:~0,1%==\ goto complete 
set /A offset=offset-1 
goto loop 

:complete 
set /A offset=offset+1 
set cmd=set handler=%%handler:~%offset%%% 
echo %cmd% > %tempfile% 
call %tempfile% 
taskkill /IM %handler% > nul 

:end 

Se si salva questo come killmp3.bat o qualcosa, si può chiamare quando vuoi. Ovviamente sii consapevole che se il programma era già in esecuzione, facendo qualcos'altro, sarebbe comunque chiuso.

Si noti che questo dipende in gran parte dalla voce nel Registro di sistema per avere il percorso eseguibile tra virgolette doppie. Se non lo hai e ci sono spazi nel nome dell'eseguibile, fallirà.

Si potrebbe generalizzare la mia tecnica per essere in grado di passare a l'estensione del file (come ad esempio .mp3, che si potrebbe cercare nel Registro di sistema per trovare il nome della classe mp3file e poi trovare il gestore da lì.

A una soluzione più generica che prende il nome del file che hai iniziato e ne calcola l'estensione è teoricamente possibile ma molto più difficile: nel caso di notepad devi capire che cosa è cercando il percorso per tutti i file eseguibili, ecc.

Questo potrebbe essere più semplice se si crea un file mp3 estremamente breve che è possibile avviare. ding sul programma, potrebbe interrompere la riproduzione del file corrente e passare a quello nuovo, che finirebbe quasi istantaneamente ed efficacemente interrompere la riproduzione.

+0

Grazie. Ma come faccio a trovarmi Puoi darmi qualche file batch di esempio che fa l'operazione? – niko

+0

per favore fatemi sapere come uccidere un'applicazione diciamo un blocco note usando il taskkill. Come faccio a trovare un gestore registrato? Qualsiasi comando per farlo – niko

+0

@Niko vedere le modifiche – ErikE

16

Immettere taskkill /? per la sintassi e alcuni esempi. Quello che vuoi fare è passare l'argomento /IM usando il nome del programma che vuoi uccidere. Ad esempio:

TASKKILL /F /IM notepad.exe 

ucciderà notepad.exe.

TASKKILL /F /IM note* 

interromperà tutti i processi che iniziano con "note".

Problemi correlati