Taskkill правильно.Но вы должны убить процесс воспроизведения файла, а не сам файл.Изучение зарегистрированного обработчика для файлов mp3 из командной строки будет немного сложнее.
Если вы знаете это, вы можете убить этот процесс.
Вот скрипт, который вычисляет зарегистрированное приложениедля mp3 файлов и убивает задачу:
@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
Если вы сохраните это как killmp3.bat
или как-то, вы можете позвонить, когда захотите.Конечно, имейте в виду, что если программа уже выполнялась, что-то еще делает, она все равно будет закрыта.
Обратите внимание, что это в значительной степени зависит от записи в реестре, в которой путь к исполняемому файлу находится в двойных кавычках.Если у вас его нет и в имени исполняемого файла есть пробелы, произойдет сбой.
Вы можете обобщить мою технику, чтобы иметь возможность передавать расширение файла (например, .mp3
, которое вы могли бынайдите в реестре имя класса mp3file
, а затем найдите оттуда обработчик.
Более общее решение, которое берет имя файла, который вы запустили, и выясняет расширение из него, теоретически возможноно намного сложнее. В случае notepad
вы должны выяснить, что это, путем поиска пути для всех исполняемых файлов и т. д.
Это может быть проще, если вы создали очень короткий mp3-файлчто вы можете начать. В зависимости от программы, он может прекратить воспроизведение текущего файла и переключиться на новый, который закончится почти мгновенно и эффективно остановит воспроизведение.