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
, а затем найти обработчик оттуда.
A более общее решение, которое берет имя файла, который вы начали, и вычисляет расширение из него, теоретически возможно, но намного сложнее. В случае notepad
вам нужно выяснить, что это такое, путем поиска пути для всех исполняемых файлов, и т. д.
Это может быть проще, если вы создали чрезвычайно короткий mp3-файл, который вы могли бы запустить. ding в программе, он может перестать воспроизводить текущий файл и переключиться на новый, что почти мгновенно прекратит и прекратит воспроизведение.
Niko какая версия Windows вы используете? – ErikE