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.
Niko ¿qué versión de Windows está ejecutando? – ErikE