Закрыть запущенное приложение из командной строки DOS

команда пуск может запустить приложение, как блокнот в пакетном файле, как это:

start notepad
start "my love.mp3"

но как закрыть запущенное приложение из командной строки? Я нашел taskkill в моих поисках, но я не думаю, что это правильная команда, потому что она не работает-она говорит нет такого файла.

как закрыть приложение, запущенное с помощью start?

2 ответов


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-файл, который вы могли бы начать. В зависимости от программы он может прекратить воспроизведение текущего файла и переключиться на новый один, который закончится почти мгновенно и эффективно остановить воспроизведение.


Enter taskkill /? для синтаксиса и некоторых примеров. Что вы хотите сделать, это передать /IM аргумент, используя имя программы, которую вы хотите убить. Например:

TASKKILL /F /IM notepad.exe

убью Блокнот.исполняемый.

TASKKILL /F /IM note*

убьет все процессы, начинающиеся с "Примечание".