2011-07-15 17 views
10

El comando de arranque puede lanzar una aplicación como Bloc de notas en un archivo por lotes como esto:Cerrar una aplicación que se ejecuta desde la línea de comandos de DOS

start notepad 
start "my love.mp3" 

Pero ¿Cómo se cierra la aplicación que se ejecuta desde la línea de comandos? Encontré taskkill en mis búsquedas pero no creo que sea el comando correcto porque no está funcionando — dice que no hay tal archivo.

¿Cómo cierro una aplicación lanzada con start?

+0

Niko ¿qué versión de Windows está ejecutando? – ErikE

Respuesta

4

Taskkill es correcto. Pero debe matar el proceso que reproduce el archivo, no el archivo en sí. Averiguar el controlador registrado para archivos mp3 desde un símbolo del sistema será un poco complicado.

Si lo conoce, puede matar ese proceso.

Aquí es un script que se da cuenta de la aplicación registrada para archivos MP3 y mata a la tarea:

@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 

Si guarda esto como killmp3.bat o algo así, se le puede llamar cuando quiera. Por supuesto, tenga en cuenta que si el programa ya se estaba ejecutando, haciendo otra cosa, se cerrará de todos modos.

Tenga en cuenta que esto depende en gran medida de la entrada en el registro para tener la ruta del archivo ejecutable entre comillas dobles. Si no tiene eso y hay espacios en el nombre del ejecutable, fallará.

Se podría generalizar mi técnica para ser capaz de pasar en la extensión de archivo (como .mp3, que se podría buscar en el registro para encontrar el nombre de clase mp3file y luego encontrar el manejador de allí.

Un Una solución más genérica que toma el nombre del archivo que inició y se da cuenta de la extensión es teóricamente posible pero mucho más difícil. En el caso de notepad, tiene que averiguar qué es buscando en la ruta todos los archivos ejecutables, etc.

Esto podría ser más simple si creó un archivo mp3 extremadamente corto que podría comenzar. En el programa, podría dejar de reproducir el archivo actual y cambiar al nuevo, que terminaría casi al instante y detendría la reproducción de manera efectiva.

+0

Gracias. Pero, ¿cómo lo averiguo? ¿Me puede dar algún archivo de muestra por lotes que realice la operación? – niko

+0

por favor, hágamelo saber cómo matar una aplicación, digamos una libreta usando la tarea. ¿Cómo encuentro un controlador registrado? Cualquier comando para hacer eso – niko

+0

@Niko vea las ediciones – ErikE

16

Ingrese taskkill /? para la sintaxis y algunos ejemplos. Lo que quiere hacer es pasar el argumento /IM usando el nombre del programa que desea eliminar. Por ejemplo:

TASKKILL /F /IM notepad.exe 

matará notepad.exe.

TASKKILL /F /IM note* 

matará a todos los procesos que comiencen por "nota".

Cuestiones relacionadas